これでどうだ!?

昨日、あまりに実験結果の評価が悪かったのでプログラムの見直し+実験結果の見直しをしていました。そしたらやっぱりいました、あの嫌なやつ。バグが潜んでいました。今回のは、これまでバグの確認のために使っていたデータ以外の、本番用のデータで確認したらけっこうあっさり分かってしまいました。これはちゃんとテストをしろよ!という神からの思し召しなんでしょうか。それにしても、これまでこんなにバグが潜んでいたのかを思うと凹みます。

しかも間違えていたのが、コレクション中の最小値を見つける部分という、かなり情けない場所。やっぱり例外処理をちゃんとするべきですね。

double min(Collection<Result> col) {
    double min = Double.MAX_VALUE;
    for(Result r : col) {
        min = r.getValue() < min ? r.getValue() : min;
    }
    return min;
}

はい、これが問題のソースコードです。一見正しそうに見えますが、ちょっと処理が抜け落ちています。さて、どこでしょう…。


--
正解は次の通りです。

double min(Collection<Result> col) {
    if(col.size()<=0)
        return 0;
    double min = Double.MAX_VALUE;
    for(Result r : col) {
        min = r.getValue() < min ? r.getValue() : min;
    }
    return min;
}

コレクションの要素数が0のときの処理が抜けていたのでした。

Track Back

Track Back URL

コメントする

公開されません

refresh captcha

画像の中に見える文字を入力してください。

このページの上部へ

About

tetsuの日記・雑記です。
日々経験したことを記録していきます。

広告

サイト内検索

最近のピクチャ

  • リアディレーラ

月別アーカイブ

最近のコメント