Java实现数组偶数求和返回平均值时返回值异常问题求解
问题原因
- 代码多写了一层完全冗余的for循环,平均值仅需计算1次,重复遍历数组赋值多次属于无效逻辑,虽不会直接影响计算结果但属于多余代码
- 打印平均值的语句没有拼接
avg变量,所以控制台只能看到average is:的前缀,看不到具体的平均值数值 - 缺少边界场景处理:如果数组内没有任何偶数,
count的值为0,执行sum/count会触发ArithmeticException除零异常,直接导致程序报错
修正后代码
public static double evenAverage(ARRAY arr[]) { double sum = 0; int count = 0; double avg = 0; for(int i = 0; i < arr.length; i++) { if(arr[i].num % 2 == 0) { sum += arr[i].num; count++; } } // 增加除零防护 if(count > 0) { avg = sum / count; } System.out.println("even sum is: " + sum); System.out.println("average is: " + avg); return avg; }
修复说明
- 移除了冗余的第二层for循环,平均值仅计算一次
- 打印平均值的语句补全了
avg变量,可正常输出平均值数值 - 新增了
count是否大于0的判断,数组无偶数时不会触发除零异常,默认返回0,你也可以根据实际业务需求调整无偶数场景的返回逻辑
内容的提问来源于stack exchange,提问作者memezip
相关产品推荐
相关产品推荐

