来自扫描仪对象的输入行在正式打印命令之前被打印

时间:2018-11-08 19:37:27

标签: java java.util.scanner user-input system.out console-input

我下面有一个以下方法,该方法接收N行的Scanner对象,每行有一个单词字符串。

    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

为什么在实际打印命令输出之前先打印一次Scanner对象的“ nextLine()”?

******这是我正在使用的一个实践问题,他们只要求我定义一个方法“ longestName”,该方法采用Scanner对象,而整数“ n”表示Scanner对象中名称的数量

上面的输出是该方法与名称为“ n”个数目的Scanner对象一起使用的结果。

2 个答案:

答案 0 :(得分:1)

它不会多次打印,而是您自己在控制台中键入的文本。如您所见,您输入Erik,然后,它将处理您的打印语句并打印name #3? Erik,其中Erik是您输入的文本。

答案 1 :(得分:1)

这将为您提供预期的输出:

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