java Scanner类具有NextLine无限循环
当我试图给它一个基本的文本文件时,为什么这段代码会进入一个无限循环
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.*;
public class TestFile
{
public static void main(String args[]) throws IOException
{
// Read in input file
File input = new File(args[0]);
Scanner freader = new Scanner(input);
while (freader.hasNextLine()) {
System.out.println("hi");
}
freader.close();
}
}
打印线一直在运行
# 1 楼答案
因为
hasNexLine()
既不获取行,也不更改扫描仪的状态。如果它只有一次是真的,并且没有调用扫描器的其他方法,那么它总是真的# 2 楼答案
添加对
nextLine
或任何其他Scanner
方法的调用,这些方法将在while
循环中读取某些输入此时,您只是重复调用hasNextLine(它只返回一个^{,它不会修改流),而不从,它将始终返回true,并且您的循环本质上是
freader
检索任何输入,因此如果freader
最初在其输入中有另一行^{while (true)
# 3 楼答案
因为您必须使用下一行,所以代码应该是:
如果您不调用
nextLine()
,您将始终在同一行上观看,并且它将始终对这一点做出正确的回答