如果 ArrayList 为空,如何 return NaN
How to return NaN if ArrayList is empty
我正在做一个 Java 练习,要求我 return 一列数字的平均值。如果 arrayList 为空,则 NaN 为 returned.
public class ListAverage {
public static double findAverageDouble(ArrayList<Double> numbers) {
if(numbers.size() != 0) {
numbers = new ArrayList<Double>();
double sum = 0.0;
for(double num : numbers){
sum += num;
}
double average = (sum / numbers.size());
return average;
} else {
return NaN;
}
}
}
我很确定我的第一部分(求平均值)是正确的。但是 return NaN 怎么可能呢?感谢您的帮助!
编辑:在我 return Double.NaN 之后。
我收到此错误,其中所有测试用例 return NaN。
Java中没有NaN本身,但有常量Double.NaN
和Float.NaN
。 Return其中之一。
您还可以减少代码的嵌套
public static double findAverageDouble(ArrayList<Double> numbers) {
if(numbers.size() == 0) {
return Double.NaN;
}
double sum = 0.0;
for(double num : numbers) {
sum += num;
}
double average = (sum / numbers.size());
return average;
}
更新:
排队
numbers = new ArrayList<Double>();
你覆盖丢失值的列表,因此非空列表的答案将始终为 0。删除此行。
流解决方案
这可能不是您想要的,也许这是为了练习。平均双数列表是内置的,或者几乎是。
public static double findAverageDouble(ArrayList<Double> numbers) {
return numbers.stream()
.mapToDouble(Double::doubleValue)
.average()
.orElse(Double.NaN);
}
DoubleStream.average()
return 是一个 OptionalDouble
,您可以考虑 return 直接使用它而不是 NaN。在上面的代码中,我相信你的话,并使用 orElse()
在空列表的情况下为 return 值选择 NaN。
我正在做一个 Java 练习,要求我 return 一列数字的平均值。如果 arrayList 为空,则 NaN 为 returned.
public class ListAverage {
public static double findAverageDouble(ArrayList<Double> numbers) {
if(numbers.size() != 0) {
numbers = new ArrayList<Double>();
double sum = 0.0;
for(double num : numbers){
sum += num;
}
double average = (sum / numbers.size());
return average;
} else {
return NaN;
}
}
}
我很确定我的第一部分(求平均值)是正确的。但是 return NaN 怎么可能呢?感谢您的帮助!
编辑:在我 return Double.NaN 之后。
我收到此错误,其中所有测试用例 return NaN。
Java中没有NaN本身,但有常量Double.NaN
和Float.NaN
。 Return其中之一。
您还可以减少代码的嵌套
public static double findAverageDouble(ArrayList<Double> numbers) {
if(numbers.size() == 0) {
return Double.NaN;
}
double sum = 0.0;
for(double num : numbers) {
sum += num;
}
double average = (sum / numbers.size());
return average;
}
更新: 排队
numbers = new ArrayList<Double>();
你覆盖丢失值的列表,因此非空列表的答案将始终为 0。删除此行。
流解决方案
这可能不是您想要的,也许这是为了练习。平均双数列表是内置的,或者几乎是。
public static double findAverageDouble(ArrayList<Double> numbers) {
return numbers.stream()
.mapToDouble(Double::doubleValue)
.average()
.orElse(Double.NaN);
}
DoubleStream.average()
return 是一个 OptionalDouble
,您可以考虑 return 直接使用它而不是 NaN。在上面的代码中,我相信你的话,并使用 orElse()
在空列表的情况下为 return 值选择 NaN。