Строка ввода от объекта Scanner печатается до официальной команды печати - PullRequest
0 голосов
/ 08 ноября 2018

У меня есть следующий метод ниже, который получает объект Scanner с N числом строк, каждая из которых содержит строку из одного слова.

    public static void longestName(Scanner console, int n) {

        for (int i = 1; i <= n; i++) {

          System.out.println("name #" + i + "?" + " " + console.nextLine());

        }

    }

Вместо этого (ожидаемый результат) ...

name #1? roy
name #2? DANE
name #3? Erik
name #4? sTeFaNiE
name #5? LaurA

... Я получаю это

roy
name #1? roy
DANE
name #2? DANE
Erik
name #3? Erik
sTeFaNiE
name #4? sTeFaNiE
LaurA
name #5? LaurA

Почему "nextLine"() "из объекта Scanner, который печатается один раз перед фактическим выводом команды печати?

****** Это практическая проблема, которую я использую, и они только просят меня определить метод" longestName«который принимает объект Scanner и целое число« n », обозначающее количество имен в объекте Scanner.

Вывод, приведенный выше, является результатом использования метода с объектом Scanner с числом имен« n ».

Ответы [ 2 ]

0 голосов
/ 08 ноября 2018

Это даст ожидаемый результат:

System.out.println("name #" + i + "?" + " ");
console.nextLine();
0 голосов
/ 08 ноября 2018

Он не печатается несколько раз, это текст, который вы сами набрали в консоли. Вы набираете Erik, как видите, только после этого он обработает ваш оператор печати и напечатает name #3? Erik, где Erik - текст, который вы ввели.

...