扫描仪nextline()仅打印新行

时间:2012-04-30 01:04:42

标签: java

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

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()使用此代码?

2 个答案:

答案 0 :(得分:3)

这是nextLine()

的Javadoc
  

使此扫描程序超过当前行并返回跳过的输入。此方法返回当前行的其余部分,不包括末尾的任何行分隔符。该位置设置为下一行的开头。

您想要next()代替:

  

查找并返回此扫描仪的下一个完整令牌。在完成令牌之前和之后是与分隔符模式匹配的输入。即使之前的hasNext()调用返回true,此方法也可能在等待输入扫描时阻塞。

您的代码变为:

while (scan.hasNext())
{
  line = scan.next();
  System.out.println(line);
}

答案 1 :(得分:0)

您可以使用 .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);
}