0

これが、データ配列のモードを計算する方法であることは知っています。

public double mode() {
    int maxValue=0, maxCount=0;
    for (int i = 0; i < a.length; i++) {
        int count = 0;
        for (int j = 0; j < a.length; j++) {
            if (a[j] == a[i])
                ++count;
            }
        }
        if (count > maxCount) {
            maxCount = count;
            maxValue = a[i];
        }
    }
return maxValue; }

モードになる値が複数ある場合に問題が発生します。なのでモードである値が複数ある場合は出力(return Double.NaN;)したい。それ、どうやったら出来るの?

4

1 に答える 1

0

カウントが等しい場合の条件を追加します。

if (count > maxCount) {
  maxCount = count;
  maxValue = a[i];
} else if (count == maxCount && maxValue != a[i]) {
  maxValue = Double.NaN;
}

デモ (Javascript): http://jsfiddle.net/Guffa/xWvAV/

于 2013-10-27T22:40:14.430 に答える