Java scanner.nextLine() в цикле for пропускает нулевую итерацию

Есть код

Scanner scan = new Scanner(System.in);
int сount = scan.nextInt();

for (i=0; i<сount; i++)
{
    System.out.println(i);
    name = scan.nextLine();
}

Получаем:
// ждет ввод с консоли
3
//Запуск цикла
i=0
i=1
// ждет ввод с консоли
text
i=2
// ждет ввод с консоли
text2

При запуске ожидает число count, получает его и проходит в цикле count итераций, ожидая при каждой итерации ввод строки. НО! При нулевом проходе цикла когда i=0 оно не ожидает никакого ввода и сразу перепрыгивает на i=1, и тогда уже ждет ввода. Если создать новый объект Scanner scan1 непосредственно перед циклом и обращаться к нему, тогда даже при нулевой итерации цикла оно ожидает ввод строки, как и положено. Почему тогда при использовании одного и того же объекта scan для ввода числа и строк оно перескакивает нулевую итерацию в цикле?

// вот так работает корректно
Scanner scan = new Scanner(System.in);
int сount = scan.nextInt();

Scanner scan1 = new Scanner(System.in);
for (i=0; i<сount; i++)
{
    System.out.println(i);
    name = scan1.nextLine();
}


Ответы (1 шт):

Автор решения: Mira

Потому что вначале, когда вы вводите integer и нажимаете Enter, input.nextInt() считывает только чило, но не конец строки. Когда input.nextLine() выполняется впервые, он читает конец строки (\n) который все еще не прочитан с прошлого ввода.

Сразу после input.nextInt() вызовите один раз input.nextLine() до цикла, и проблема решится

→ Ссылка