2

我正在尝试使用扫描仪打印文本文件中的行,但它只打印第一行,然后只打印新行,直到 while 循环遍历文件。

String line;
File input = new File("text.txt");
Scanner scan = new Scanner(input);
while (scan.hasNext()) //also does not work with hasNextLine(), but additional error
{
line = scan.nextLine();
System.out.println(line);
//other code can see what is in the string line, but output from System.out.println(line); is just a new line
}

如何让 System.out.println() 使用此代码?

4

2 回答 2

3

这是 JavadocnextLine()

将此扫描器前进到当前行并返回被跳过的输入。此方法返回当前行的其余部分,不包括末尾的任何行分隔符。位置设置为下一行的开头。

你想要next()

从此扫描器中查找并返回下一个完整的令牌。一个完整的标记前后是匹配分隔符模式的输入。此方法可能会在等待输入扫描时阻塞,即使先前调用 hasNext() 返回 true。

您的代码变为:

while (scan.hasNext())
{
  line = scan.next();
  System.out.println(line);
}
于 2012-04-30T01:18:24.713 回答
1

您可以使用.next()方法:

String line;
File input = new File("text.txt");
Scanner scan = new Scanner(input);
while (scan.hasNext()) //also does not work with hasNextLine(), but additional error
{
    line = scan.next();
    System.out.println(line);
}
于 2012-04-30T01:21:36.330 回答