Почему Scanner.in.nextLine() срабатывает и считывает пустую строку без ввода?
В цикле for() мне нужно делать вводы строк с консоли и добавлять их в массив. По непонятным мне причинам первая итерация проходит, запихивая в массив пустую строку. До этого я хочу с консоли ввести размер этого массива. Если я это делаю в main() и передаю в функцию размер, то всё в порядке, но я хочу делать это внутри функции. Подскажите в чём причина, что после ввода размера с помощью in.nextInt() считывается пустая строка с помощью in.nextLine() ?
public static void Salads() {
Scanner in = new Scanner(System.in);
System.out.print("Введи количество салатов - ");
int quantity = in.nextInt();
String [] salads = new String [quantity];
for(int i=0; i < quantity; ++i) {
System.out.println("размер i в цикле = " + i);
System.out.print("Введи название салата - ");
salads[i] = in.nextLine();
System.out.println("первый [0] элеменет в массиве салаты = " + salads[0]);
}
Множество println это я для себя делал, как маркеры
Ответы (1 шт):
Попробуйте так:
int quantity = in.nextInt();in.nextLine();
Если вы ввели, например 5, то на самом деле там будет еще символ перевода строки, например "5\n", кроме того, .nextInt считает "5", а символ перевода останется, его как раз и получите при вызове nextLine