使用nextInt()接受键盘输入时必须注意换行符的输入

int option = in.nextInt();
in.nextLine();  //**
if (option == 0) {
       System.out.println("请输入个人信息:");
       System.out.println("姓名:");
       String name = in.nextLine();
       System.out.println("密码:");
       String password = in.nextLine();
       System.out.println("地址:");
       String address = in.nextLine();
       System.out.println("电话:");
       String phone = in.nextLine();
       System.out.println(name + "," + password + "," + address + "," + phone);
}

问题1:Scanner 的next()或nextInt()与nextLine()连续调用时出现的问题

nextInt()不会读取换行符;next()划分每个元素的标准是:空格、制表符、或者换行符。所有元素均有这三种情况分割开来,其所有返回的值均为String类型
以上诉代码为例,nextInt()输入option值,之后用户输入换行符想要结束,可是nextInt()方法并不会读取换行符,因此换行符被读取放到了下一个nextLine()中,nextLine()读取换行符,直接输入结束,因此若没有**行的nextLine()方法,输入的姓名name值将会是空(“”)

问题1:姓名无法输入,结束了

解决办法:在next()或nextInt()后面加一行nextLine()用于读取换行符

问题2:Exception in thread "main" java.util.InputMismatchException

普遍情况下,这种问题也是出现了问题1中相似的问题,导致后面的输入直接读取了前一个next()或者nextInt()的换行符,导致输入不匹配报错
解决办法:在next()或nextInt()后面加一行nextLine()用于读取换行符

你可能感兴趣的:(使用nextInt()接受键盘输入时必须注意换行符的输入)