Есть код
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();
}
int сount = scan.nextInt();лишняя. – DrMcSheen Dec 06 '21 at 09:55