如何在二维数组中查找最大最小值,现有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
相关产品推荐
相关产品推荐

