【发布时间】:2021-04-16 01:08:12
【问题描述】:
此代码用于在每个给定数据集中查找统计模式。
public double mode() {
if(data==null) {
return Double.NaN;
}
else if(data.length==0) {
return Double.NaN;
}
else {
int[] counter1=new int[data.length];
int counter2=0;
double mode = Double.NaN;
for (int i = 0; i < data.length; i++) {
for (int j = 0; j < data.length; j++) {
if (data[i] == data[j]) {
counter1[i]++;
}
else {
}
}
}for(int i=0; i<data.length; i++) {
for (int j=0; j < data.length; j++) {
if (counter1[i] > counter1[j]) {
counter2=i;
}
}
}
if (counter2 > 0) {
mode = data[counter2];
}else if (counter2 < 0){
mode = Double.NaN;
}
return mode;
}
使用以下数据集:
- [20.0, 20.0]
- [1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0]
我希望变量模式具有:
For dataset 1: mode=20.0
For dataset 2: mode=NaN
但是,这是我得到的:
For dataset 1: mode=NaN
For dataset 2: mode=NaN
我应该如何实现该结果并有方法每次都将正确的统计模式保存到变量模式?
免责声明:我不能使用任何辅助方法(例如数组)
【问题讨论】:
-
[1, 1, 2, 2]怎么样? -
它给了我 mode=NaN 这是一个正确的值。
-
当
data==null和data.length==0都return Double.NaN;时,不要将它们放在一起data==null || data.length==0。另外,我在签名中没有看到data这是从哪里来的? -
感谢您的建议!
-
数据来自不同的类。它们是通过这种方法传递的。我作为示例给出的数据是传递给测试它的数据。