我正在使用 Scanner
和 FileReader
从 Java 中的 .txt 文件读取一组整数值。输入文件中的每一行都有一个值。所有值都被读入 StringBuilder 变量,但由于某种原因,编译器在 while 循环中读取输入结束时抛出异常,我不太明白为什么。
Scanner inFile;
String value = "";
String arrayString = "";
StringBuilder sb = new StringBuilder();
try {
inFile = new Scanner(new FileReader("data.txt"));
value = inFile.next();
while (inFile.hasNextLine()) {
sb.append(value);
value = inFile.next();
}
arrayString = sb.toString(); // Not executing
System.out.println(arrayString); // Not executing
inFile.close();
} catch (Exception e) {
System.out.println("Error: File not found.");
} finally {
// inFile.close();
}
System.out.println(arrayString); // Not executing
最佳答案
the compiler throws an exception right at the end of reading the input in the while loop
编译器不会“抛出异常”。相反,它会给出与代码本身问题相关的错误/警告。
话虽如此,“在读取输入结束时”意味着您的文件可能在整数值集之后包含换行符。如果是这种情况那么你的Scanner
会抛出 java.util.NoSuchElementException
调用value = inFile.next();
时.
您可以尝试以下阅读方式:
while (inFile.hasNextLine()) {
value = inFile.nextLine();
sb.append(value);
}
还尝试在 catch
中打印异常消息堵塞。一个java.util.NoSuchElementException
并不意味着Error: File not found.
关于Java读取输入时抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25339243/