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 без опции ввода чего-либо.