torutkのブログ

ソフトウェア・エンジニアのブログ

Java Puzzler(書籍)の1題目

Java Puzzlers 罠、落とし穴、コーナーケース

Java Puzzlers 罠、落とし穴、コーナーケース

先週のJavaOne Tokyoで購入しました。さっそく1題目から詰まっています。

public static boolean isOdd(int i) {
    return i % 2 == 1;
}

うーむ、どう見てもちゃんと動くとしか思えないなぁ。一応Java言語仕様を見て演算子優先順序を確認する。問題ないなぁ。

次に自分でプログラムを作って動作確認。1, 123, 1234,‥‥、と与えていく。問題なさそうだ。続いて、0, -4, 問題なし。-3, あれ、falseが返却されたぞ。-99999, これもfalseだ。おやおや、負の値を与えるとすべてfalseとなる。ふーむ、i % 2はiが負の場合、-1になるのかぁ。やっと理解。

こんな短いコードでも、正しく動くことを保証しようとするならテストを書いて検証しないと駄目ですね。