我的CS教授建议使用nextLine()方法并解析出整数,而不是使用nextInt()方法。我只是想知道为什么要使用nextLine()而不是nextInt()。
例如:
Scanner in = new Scanner(System.in);
System.out.println("Enter an integer: ");
String input = in.nextLine();
int num = Integer.parseInt(input);
代替:
Scanner in = new Scanner(System.in);
System.out.println("Enter an integer: ");
int input = in.nextInt();
答案 0 :(得分:1)
我的推理是,因为学生认为输入只是被神奇地读取为int,boolean,long等,而忽略了它实际上如何变为原始数据类型这一事实。其他语言(尤其是Java的对应C#语言)要求您首先将输入作为字符串读入,然后将其解析为适当的数据类型。
使用nextInt时还有new line character problem with Scanner。
答案 1 :(得分:0)
当调用nextInt()方法时,输入流的当前位置跳到下一个输入的String。然后按Enter键,您将手动跳到下一行。
但是,当调用nextLine()方法时,输入流立即跳到下一行。
将nextInt()方法放入循环中可能会使函数在能够键入之前先读取一些内容,而这是您不希望的。
Scanner sc = new Scanner(System.in);
int x;
do{
try{
x = sc.nextInt();
break;
}
catch(InputMismatchException e){
System.out.print("Enter an Integer");
}
}while(true);
永久运行循环,而
Scanner sc = new Scanner(System.in);
int x;
do{
try{
x = Integer.parseInt(sc.nextLine());
break;
}
catch(NumberFormatException e){
System.out.print("Enter an Integer");
}
}while(true);
不是