Java读取输入时抛出异常

标签 java

我正在使用 ScannerFileReader 从 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/

相关文章:

java - 使用多个功能分支时处理架构更改

java - 重写等于仅一种方法

java - 单元测试 - Java 的每个测试代码覆盖率

java - 在图像按钮android中设置和获取唯一参数

java - Gradle 同步失败 : com. google.android.gms :play-services-basement and com. google.firebase:firebase-common

java - 共享首选项未保存或循环不起作用

java - 如何使用 PowerMock 模拟 ServletFileUpload 的创建?

java - 微服务 - 多个服务副本之间的竞争条件

java - 设计问题 : need instances of an enum member as (property, 值)对

java - 捕获超链接点击java SWT