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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 14:01:12