You need to enable JavaScript to run this app. Java读取文件时如何跳过空行,解决读取空行时程序崩溃的问题
优惠活动
大模型
产品
解决方案
定价
更多

Java读取文件时如何跳过空行,解决读取空行时程序崩溃的问题

Java读取文件跳过空行的解决方法

崩溃原因

你程序崩溃的原因很明确:读取到空行时,行内没有任何有效内容,此时调用lineScan.next()读取姓名会直接抛出找不到元素的异常,导致程序终止。

修复方法

只需要在读取到每一行后,先做空行校验,确认是空行就直接跳过后续处理即可,具体操作如下:

  • 读取单行后先调用trim()方法去除行首尾的所有空白字符(空格、制表符、换行符等)
  • 校验处理后的字符串长度是否为0,为0则判定为空行,执行continue直接进入下一轮循环读取下一行

修改后的完整代码

import java.io.*;
import java.util.*;

public class DATA {
    public static void main(String[] args) {
        Scanner input = null;

        try {
            input = new Scanner(new File("EmployeeData.txt"));
        } catch (Exception e) {
            System.out.println("文件读取失败:" + e.getMessage());
            System.exit(-1);
        }

        while (input.hasNextLine()) {
            String line = input.nextLine();
            // 新增空行判断逻辑
            if (line.trim().isEmpty()) {
                continue;
            }
            Scanner lineScan = new Scanner(line);
            String name = lineScan.next();
            double rate = lineScan.nextDouble();
            int sum = 0;
            while (lineScan.hasNextInt()) {
                sum = sum + lineScan.nextInt();
            }

            double salary = rate * sum;
            if (salary > 400) {
                double tax = salary * 0.67;
                System.out.print(name + " 总工时为: " + sum + " 小时,时薪为$" + rate);
                System.out.printf(" 时薪为 $ %.2f%n", rate);
                System.out.printf(" 总薪资为 $ %.2f%n", salary);
                System.out.println("\n扣除33%个税后的实发薪资为 " + tax);
                System.out.println();
            } else {
                double tax = salary * 0.75;
                System.out.print(name + " 总工时为: " + sum);
                System.out.printf(" 小时,时薪为 $ %.2f", rate);
                System.out.printf(" 总薪资为 $ %.2f", salary);
                System.out.println("\n扣除25%个税后的实发薪资为 $" + tax);
                System.out.println();
            }
            lineScan.close();
        }
        input.close();
    }
}

额外注意事项

你提供的样例文件中,Betty对应的行末尾存在7.的内容,不属于合法的int格式,如果这不是输入笔误,你还需要额外添加格式校验逻辑处理这类非整数内容,避免再次触发运行异常。

内容的提问来源于stack exchange,提问作者Tien Ditol

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.09 19:48:01