0

我在下面有一个以下方法,它接收一个包含 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

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

****** 这是我正在使用的一个练习题,他们只要求我定义一个方法“longestName”,该方法接受一个 Scanner 对象和一个表示 Scanner 对象中名称数量的整数“n”。

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

4

2 回答 2

1

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

System.out.println("name #" + i + "?" + " ");
console.nextLine();
于 2018-11-08T19:50:34.760 回答
1

它不是多次打印,而是您自己在控制台中输入的文本。您输入Erik如您所见,只有在此之后它才会处理您的打印语句并打印您输入的文本在name #3? Erik哪里。Erik

于 2018-11-08T19:41:29.190 回答