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

Java读取文本文件时如何忽略首行字符串并读取后续整数

解决方案:跳过文件首行并读取后续整数统计

原代码问题分析

  1. 未处理首行:没有主动读取并忽略首行的字符串内容,导致后续判断逻辑混乱
  2. 变量未正确赋值:str始终为null,调用Integer.parseInt(str)会直接抛出空指针异常
  3. 循环逻辑错误:hasNextLine()仅做判断未执行读取操作,无法推进文件指针

修改后的完整代码

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

public class Homework7_56299 {

    // 显示程序用途并请求用户输入文件名
    public static void main(String[] args) throws IOException {
        System.out.println("This program reads a number file and prints the statistics");
        System.out.println("Enter a file name: ");

        String fileName;
        Scanner keyboard = new Scanner(System.in);
        fileName = keyboard.nextLine();
        processFile(fileName);
    }   

    // 读取文件并计算统计数据
    public static void processFile(String fileName) throws IOException
    {
        int smallest = Integer.MAX_VALUE;
        int largest = Integer.MIN_VALUE;
        double sum = 0.0;
        int count = 0;

        File file = new File(fileName);
        Scanner inputFile = new Scanner(file);

        // 跳过首行字符串:直接读取首行并丢弃
        if (inputFile.hasNextLine()) {
            inputFile.nextLine();
        }

        // 循环读取所有整数并统计
        while (inputFile.hasNextInt()) {
            int num = inputFile.nextInt();
            // 更新最小值
            if (num < smallest) {
                smallest = num;
            }
            // 更新最大值
            if (num > largest) {
                largest = num;
            }
            // 累加总和与计数
            sum += num;
            count++;
        }

        inputFile.close();

        // 输出统计结果
        System.out.println("\n统计结果:");
        if (count > 0) {
            System.out.println("最小值:" + smallest);
            System.out.println("最大值:" + largest);
            System.out.println("总和:" + sum);
            System.out.println("整数个数:" + count);
            System.out.println("平均值:" + (sum / count));
        } else {
            System.out.println("文件中没有可统计的整数");
        }
    }
}

关键逻辑说明

  • 跳过首行:通过inputFile.nextLine()主动读取首行内容并忽略,确保后续循环只处理数字行
  • 整数读取与统计:用while(inputFile.hasNextInt())循环判断是否还有整数,每次读取后更新最小、最大、总和及计数变量
  • 结果输出判断:增加count > 0的判断,避免文件无整数时出现除以0的错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 13:10:11