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

如何在二维数组中查找最大最小值,现有Java代码报错如何修复

问题诊断
  • 缺失循环逻辑:没有嵌套循环遍历3行4列的数组,仅执行了1次输入操作,只给arr[0][0]完成赋值,剩下11个元素全部为int默认值0,也无法遍历所有元素判断最值
  • 最大值判断逻辑错误:现有判断条件写为if (arr[0][0] > largest),永远拿第一个元素和最大值变量比对,完全没有用到当前输入的元素值
  • 最值初始化逻辑不合理:刚创建的int数组默认所有元素为0,直接用arr[0][0]初始化最大/最小值,如果用户输入的所有数都大于0或者都小于0,最终结果会出错
  • 结果输出位置错误:输出弹窗写在了输入逻辑内部,还没完成12个数字的录入就会直接弹出结果
  • 代码结构混乱:存在大量无意义的冗余大括号,数组下标i、j没有做递增操作,永远固定为0
正确实现代码
package HighLow;

import javax.swing.JOptionPane;

public class HighLow {
    public static void main (String[]args) {
        int[][] arr = new int[3][4];
        // 初始化最值为极端值,避免默认值影响判断
        int smallest = Integer.MAX_VALUE;
        int largest = Integer.MIN_VALUE;

        // 双层循环遍历3行4列数组
        for(int i = 0; i < 3; i++){
            for(int j = 0; j < 4; j++){
                // 逐位录入用户输入
                arr[i][j] = Integer.parseInt(JOptionPane.showInputDialog("请输入第" + (i*4 + j + 1) + "个整数(共12个):"));
                // 比对更新最小值
                if(arr[i][j] < smallest){
                    smallest = arr[i][j];
                }
                // 比对更新最大值
                if(arr[i][j] > largest){
                    largest = arr[i][j];
                }
            }
        }

        // 所有数字录入完成后输出结果
        JOptionPane.showMessageDialog(null, "数组中的最小值为:" + smallest);
        JOptionPane.showMessageDialog(null, "数组中的最大值为:" + largest);
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 20:06:05