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

如何在Java中找出二维数组的最大值与最小值(附文件读取代码)

如何在Java中查找二维数组的最大值与最小值

先看你提供的读取文件到二维数组的代码,我先帮你完善一些细节(比如异常处理、数组越界防护),再添加查找最值的实现方法,这样整体逻辑更完整健壮。

首先修正原代码的小问题并补充功能

原代码里的空catch块不利于调试,而且没有做数组越界的防护,我调整后加上了最值查找的方法:

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

public class Average {
    // 假设确定是10行12列的二维数组
    static Integer[][] myDouble = new Integer[10][12];
    static int x = 0, y = 0;

    public Average() {
        // 用try-with-resources自动关闭流,避免资源泄漏
        try (BufferedReader in = new BufferedReader(new FileReader("StudentIdAverage.txt"))) {
            String line;
            // 限制行数不超过数组长度,防止越界
            while ((line = in.readLine()) != null && x < myDouble.length) {
                String[] values = line.split("\\s+");
                // 限制列数不超过每行的长度
                for (int i = 0; i < values.length && y < myDouble[x].length; i++) {
                    int strDouble = Integer.parseInt(values[i]);
                    myDouble[x][y] = strDouble;
                    y++;
                }
                x++;
                y = 0;
            }
        } catch (IOException ioException) {
            // 打印异常堆栈,方便排查文件读取问题
            ioException.printStackTrace();
        }
    }

    // 查找二维数组的最大值
    public int findMaxValue() {
        // 初始化最大值为整数最小值,确保第一个有效值能覆盖它
        int max = Integer.MIN_VALUE;
        for (Integer[] row : myDouble) {
            for (Integer num : row) {
                // 处理Integer类型可能的null值,避免空指针
                if (num != null && num > max) {
                    max = num;
                }
            }
        }
        return max;
    }

    // 查找二维数组的最小值
    public int findMinValue() {
        int min = Integer.MAX_VALUE;
        for (Integer[] row : myDouble) {
            for (Integer num : row) {
                if (num != null && num < min) {
                    min = num;
                }
            }
        }
        return min;
    }

    // 测试用的main方法
    public static void main(String[] args) {
        Average average = new Average();
        System.out.println("二维数组的最大值: " + average.findMaxValue());
        System.out.println("二维数组的最小值: " + average.findMinValue());
    }
}

关键逻辑说明

  • 遍历逻辑:用增强for循环遍历每一行和每个元素,代码更简洁易读,不用手动处理索引
  • null值处理:因为你用的是Integer引用类型数组,可能存在未赋值的null元素,所以必须先判断元素不为null,避免空指针异常
  • 最值初始化:最大值初始化为Integer.MIN_VALUE,最小值初始化为Integer.MAX_VALUE,保证第一个有效值能正确更新它们
  • 资源与异常优化:用try-with-resources自动关闭IO流,同时打印异常信息,方便调试文件读取的问题

如果你的数组是int基本类型(不会有null),可以简化掉null判断:

// 针对int类型二维数组的最大值查找
public int findMaxForIntArray(int[][] arr) {
    int max = Integer.MIN_VALUE;
    for (int[] row : arr) {
        for (int num : row) {
            if (num > max) {
                max = num;
            }
        }
    }
    return max;
}

希望这个方案能帮到你!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 07:48:50