Java读取文本文件每行最大值问题:仅能识别第一行最大值
解决逐行读取文本文件并计算每行最大值的问题
你的需求是读取文本文件中每行的最大数值,但当前代码仅能找出第一行的最大值(实际当前代码是在计算所有数字的全局最大值,并非每行单独计算)。以下是问题分析和修正方案:
原代码问题分析
原代码使用Scanner直接按整数读取整个文件,没有区分行的边界,会把所有行的数字当成一个连续序列,无法实现逐行计算最大值的需求。同时初始值highScore = sc.nextInt()仅针对第一个数字开始比较,不符合逐行处理的逻辑。
修正后的代码
我们需要先按行读取文件内容,再对每行的数字进行拆分和最大值计算:
import java.io.File; import java.io.FileNotFoundException; import java.util.Scanner; public class LineMaxValue { public static void main(String[] args) { File file = new File("input.txt"); try (Scanner sc = new Scanner(file)) { // 逐行读取文件 while (sc.hasNextLine()) { String line = sc.nextLine(); // 拆分当前行的数字 Scanner lineScanner = new Scanner(line); int lineMax = Integer.MIN_VALUE; // 遍历当前行的所有整数 while (lineScanner.hasNextInt()) { int num = lineScanner.nextInt(); if (num > lineMax) { lineMax = num; } } lineScanner.close(); // 输出当前行的最大值 System.out.println("当前行最大值:" + lineMax); } } catch (FileNotFoundException e) { e.printStackTrace(); } } }
代码说明
- 使用
sc.hasNextLine()和sc.nextLine()逐行读取文件,确保每行单独处理。 - 对每行创建新的
Scanner拆分数字,避免跨行干扰。 - 每行最大值初始化为
Integer.MIN_VALUE,确保即使该行全是负数也能正确计算最大值。 - 采用try-with-resources语法自动关闭Scanner,避免资源泄漏。
针对你提供的示例输入:
第一行:4 10 2
第二行:11 5 20
第三行:6 3 5
运行代码后会输出:
当前行最大值:10 当前行最大值:20 当前行最大值:6
内容的提问来源于stack exchange,提问作者user18061363
相关产品推荐
相关产品推荐

