【发布时间】:2019-02-22 03:32:51
【问题描述】:
问题:我在计算 arrayList 的中值时遇到问题
背景:所以我的 ArrayList 得到随机生成的值,我必须计算它的中值;我相信我的中值公式很好,但我得到了 ArrayList 中 3 个值的错误中值答案。
对于类似三个值,它给出了错误的中位数。例如: 当数组列表具有值时: 193.5、200.5、239.8 那么程序只是取前两个值的平均值并给出答案,而不是 200.5
public double getMedianB(){
Collections.sort(myDataB);
double middle = myDataB.size()/2;
if (myDataB.size()%2 == 1) {
middle = (myDataB.get(myDataB.size()/2) + myDataB.get(myDataB.size()/2 - 1))/2;
} else {
middle = myDataB.get(myDataB.size() / 2);
}
System.out.println("median:" + middle);
return middle;
}
【问题讨论】:
-
这段代码是否应该可重复用于任何数量的值?无论哪种方式,在我看来,代码完全按照您编写的代码执行。
-
注意索引从零开始。
-
AFAIK 不应该反过来吗?我的意思是
if (myDataB.size() % 2 == 0) {do average of middle values}?因为在奇数情况下,您的中位数是完美的中间值,而当您有偶数个值时,您需要在中间的两者之间找到一个值。