为什么nextLine()返回一个空字符串?

这可能是最简单的事情之一,但我看不到自己在做错什么。

我的输入包括一个带有数字的第一行(要读取的行数),一串包含数据的行和最后一行仅包含\ n的行。我应该处理此输入,并在最后一行之后做一些工作。

我有这个输入:

5

test1

test2

test3

test4

test5

/*this is a \n*/

对于读取输入,我有以下代码。

int numberRegisters;

String line;

Scanner readInput = new Scanner(System.in);

numberRegisters = readInput.nextInt();

while (!(line = readInput.nextLine()).isEmpty()) {

System.out.println(line + "<");

}

我的问题是为什么我什么都不打印?程序读取第一行,然后不执行任何操作。

回答:

nextInt不读取以下换行符,因此第一个nextLine(返回 当前

行的其余部分)将始终返回空字符串。

这应该工作:

numberRegisters = readInput.nextInt();

readInput.nextLine();

while (!(line = readInput.nextLine()).isEmpty()) {

System.out.println(line + "<");

}

但是我的建议不要nextLinenextInt/ nextDouble/

next/等混合使用,因为任何试图维护该代码(包括您自己在内)的人都可能不会意识到或忘记了上述内容,因此上述代码可能会使您感到困惑。

所以我建议:

numberRegisters = Integer.parseInt(readInput.nextLine());

while (!(line = readInput.nextLine()).isEmpty()) {

System.out.println(line + "<");

}

以上是 为什么nextLine()返回一个空字符串? 的全部内容, 来源链接: utcz.com/qa/403606.html

回到顶部