Почему 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 шт):

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

Попробуйте так:

int quantity = in.nextInt();in.nextLine();

Если вы ввели, например 5, то на самом деле там будет еще символ перевода строки, например "5\n", кроме того, .nextInt считает "5", а символ перевода останется, его как раз и получите при вызове nextLine

→ Ссылка