You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java中使用Integer.parseInt读取文件首行数字报错,如何解决?

问题分析

你遇到的NumberFormatException是因为在循环里每次读取一行就尝试转成整数,但文件只有首行是数字,后续行都是字符串(比如"Basketball"),自然无法转成整数,触发报错。

解决方案

核心思路是:先单独读取并解析首行的数字,再循环处理剩下的运动名称行,修改后的代码如下:

// 先读取首行的数字
int num = 0;
if (inFile.hasNextLine()) {
    String firstLine = inFile.nextLine();
    try {
        num = Integer.parseInt(firstLine);
    } catch (NumberFormatException e) {
        // 可选:处理首行不是有效数字的情况
        System.err.println("首行不是有效数字:" + firstLine);
        return;
    }
}

// 再循环处理剩下的运动名称行
int i = 0;
while (inFile.hasNextLine()) {
    String line = inFile.nextLine();
    
    if (line.toLowerCase().equals("basketball")) {
        AllSports.add(new Basketball(i));
    } else if (line.toLowerCase().equals("football")) {
        AllSports.add(new Football(i));
    }
    
    i++;
}

// 把调用Score_Med的逻辑移到循环外,避免重复执行(根据你的需求调整)
for (Sports obj : AllSports) {
    obj.Score_Med();
    obj.Score_Med();
}
关键修改点
  • 把首行的解析逻辑从循环中抽离,只处理第一行
  • 增加try-catch处理首行可能不是数字的异常(可选,但让代码更健壮)
  • 将Score_Med()的调用移到循环外,避免每读一行就重复执行(原代码逻辑会导致多次重复调用,可根据实际需求调整)

内容的提问来源于stack exchange,提问作者Nicolas Nino

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 23:41:32