在下面的代码中:
import java.util.Scanner;
class A
{
public static void main()
{
Scanner sc = new Scanner(System.in);
System.out.println("Enter the first number: ");
int a = sc.nextInt();
System.out.println("Enter the second number: ");
int b = sc.nextInt();
System.out.println(a);
System.out.println(b);
}
}
如果在显示第一条消息后,我在一行中输入两个数字(用空格分隔),则将同时输入这两个数字,然后显示第二条消息。为什么会这样?
答案 0 :(得分:1)
nextInt()
会为您提供下一个输入,无论输入是否在同一行上。
要仅获取每行的第一个值,可以在两次调用sc.nextLine()
的过程中使用sc.nextInt()
来消耗行终止符并移至下一行:
System.out.println("Enter the first number: ");
int a=sc.nextInt();
sc.nextLine(); //Place this to ensure other inputs on same line don't matter
System.out.println("Enter the second number: ");
int b=sc.nextInt();
//Without the nextLine it will set c to the next int even on same line as b
System.out.println("Enter the third number: ");
int c=sc.nextInt();
System.out.println("a = " + a);
System.out.println("b = " + b);
System.out.println("c = " + c);
测试运行:
Enter the first number:
1 2 3 4 5
Enter the second number:
78 89 99
Enter the third number:
输出:
a = 1
b = 78
c = 89
如您所见,扫描仪只会将a
设置为1
并忽略2 3 4 5
,然后等待下一行的b
下一个输入并进行设置b
至78
。
但是,c
将被设置为89
,因为没有通知scanner
移至下一行,然后print语句将在之后运行,而不能选择输入任何内容。