Как очистить буфер внутри цикла на каждой итерации в Java? - PullRequest
0 голосов
/ 21 февраля 2011

Я пишу цикл for для заполнения массива. Это мой код:

for (int i = 0; i < students.length; i++)
    {
        System.out.println("Student " + (i+1));

        System.out.print("First Name: ");
        students[i][0] = keyboard.nextLine();

        System.out.print("Last Name: ");
        students[i][1] = keyboard.nextLine();

        System.out.print("Date of Birth (MM/DD/YYYY): ");
        students[i][2] = keyboard.nextLine();

    }

однако при запуске выдает следующее:

Имя: Фамилия:

и будет читать только одну строку для имени и фамилии.

Это происходит только на первой итерации, все последующие итерации хороши. Я думаю, что это может быть связано с очисткой буфера, но почему это происходит только в первый раз?

1 Ответ

1 голос
/ 21 февраля 2011

Интересно, есть ли у вас символ конца строки, который не был обработан должным образом до вызова этого блока кода. Используете ли вы какие-либо другие методы Сканера, такие как nextInt (), nextDouble () или next ()? Если это так, то вам может потребоваться выполнить эти вызовы методов с помощью вызова nextLine (), чтобы проглотить маркер конца строки. Например,

int myInt = keyboard.nextInt();
keyboard.nextLine();  // call this to swallow end of line character

double myDouble = keyboard.nextDouble();
keyboard.nextLine();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...