Java 扫描仪中的无接触异常

Java 扫描仪中的无接触异常,java,parsing,java.util.scanner,Java,Parsing,Java.util.scanner,我正在研究一种解析器(爱好项目),它接受一个Cpp文件,读取文件中的注释,然后尝试基于该文件创建一个头文件 我面临的问题是当java.util.Scanner即将读取第一行时。程序停止并向我提供NoTouchElementException。我真的搞不清楚到底出了什么问题。我检查了路径和路径名是否正确。该文件必须在那里,并且我可以在调试时读取Scanner对象上的字段。那么到底是什么问题呢 一些人暗示,它可能认为文件中没有行 当((line=scanner.next())!=null){ 罪魁祸

我正在研究一种解析器(爱好项目),它接受一个Cpp文件,读取文件中的注释,然后尝试基于该文件创建一个头文件

我面临的问题是当
java.util.Scanner
即将读取第一行时。程序停止并向我提供
NoTouchElementException
。我真的搞不清楚到底出了什么问题。我检查了路径和路径名是否正确。该文件必须在那里,并且我可以在调试时读取Scanner对象上的字段。那么到底是什么问题呢

一些人暗示,它可能认为文件中没有行

当((line=scanner.next())!=null){

罪魁祸首是:

while((line = scanner.next()) != null)
。您可以改用
hasNext
方法:

while(scanner.hasNext()) {
    String line = scanner.next();
    //etc.
}
如果没有更多令牌,则引发NoTouchElement异常

我看到您正在遍历一个文件列表。您在该列表中得到的第一个文件可能是空的吗


你能打印出文件名并检查确认吗?

你可以尝试将while循环从
line!=null
更改为scanner.hasNext(),然后在循环中使用scanner.next()。它以前(在我制作的多个其他程序中)工作过,所以这很奇怪。我将尝试一下并报告。
while(scanner.hasNext()) {
    String line = scanner.next();
    //etc.
}