Java数组仅返回最小值和最大值的代码错误排查及修正请求
问题分析与代码修正
代码存在的问题
- 初始值设置错误:
min和max被固定初始化为0,这会导致两种错误场景:当数组所有元素都大于0时,最小值会错误保留为0;当数组所有元素都小于0时,最大值会错误保留为0,完全偏离数组的真实极值。 - 未处理空数组边界:如果传入的
results数组为空或为null,循环不会执行,直接返回[0, 0],不符合合理的业务逻辑。
修正后的代码
public class Stat { public static int[] getStat(int[] results) { // 处理空数组或null数组的边界情况 if (results == null || results.length == 0) { throw new IllegalArgumentException("数组不能为空或长度为0"); } // 用数组第一个元素初始化min和max,确保初始值来自数组本身 int min = results[0]; int max = results[0]; // 从第二个元素开始遍历,减少一次不必要的比较 for(int i = 1; i < results.length; i++){ if(results[i] < min){ min = results[i]; } if(results[i] > max) { max = results[i]; } } return new int[] { min, max }; } }
修正说明
- 正确初始化极值:使用数组第一个元素作为
min和max的初始值,保证初始值是数组内的真实元素,避免固定初始值带来的错误。 - 添加边界校验:对空数组或
null数组抛出明确异常,避免返回无意义的默认值。 - 优化遍历起点:从索引1开始遍历,因为索引0的元素已经作为初始值,无需重复比较,小幅提升执行效率。
内容的提问来源于stack exchange,提问作者Andrew Trendy
相关产品推荐
相关产品推荐

