Java计算ArrayList均值:空表返回NaN及全用例返回NaN问题求解
问题原因
你的代码存在两处核心错误:
- NaN返回写法错误:Java中没有直接可用的
NaN关键字,返回非数值需要使用Double类提供的常量Double.NaN - 逻辑覆盖错误:你在判断传入列表非空后,第一行就执行了
numbers = new ArrayList<Double>();,用一个全新的空列表覆盖了传入的原始参数,后续遍历求和、计算平均值的操作都是基于这个空列表执行,0除以0的计算结果本身就是NaN,这就是你修改NaN写法后所有测试用例全部返回NaN的原因。
修正后代码
import java.util.ArrayList; public class ListAverage { public static double findAverageDouble(ArrayList<Double> numbers) { // 可选增加null判断,避免传入null时抛出空指针异常 if (numbers == null || numbers.isEmpty()) { return Double.NaN; } double sum = 0.0; for (double num : numbers) { sum += num; } return sum / numbers.size(); } }
内容的提问来源于stack exchange,提问作者HY2000
相关产品推荐
相关产品推荐

