Java读取文本文件时如何忽略首行字符串并读取后续整数
解决方案:跳过文件首行并读取后续整数统计
原代码问题分析
- 未处理首行:没有主动读取并忽略首行的字符串内容,导致后续判断逻辑混乱
- 变量未正确赋值:
str始终为null,调用Integer.parseInt(str)会直接抛出空指针异常 - 循环逻辑错误:
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
相关产品推荐
相关产品推荐

