質問: 久しぶりにJavaを触ることになり、練習問題をつらつらと解いておりました所、 「3の倍数を表示せよ(30までの範囲で)」という問題があり、 public static void main (String args[]) { for (int counter =1;counter <= 30; counter +=1 ) { if (counter % 3==0) { System.out.println (counter); } } } このように書いた所Eclipseがdivide by zeroだからexception書けよと注意するかと思ったらコンパイルも通過し、結果も正常に 3 6 9 12 15 18 21 24 27 30 と表示されました。 余りを求める演算子を使っていても直接除算しなければ内部処理されるものなのでしょうか。処理系にかかわる問題ではないので「これはこういうもの」と覚えりゃいいのですがなんとなく違和感があったもので質問させていただきました。
回答: ゼロ除算とは分子が0の時に発生するものです。 counter % 3は分子が常に3な訳ですからゼロ除算は絶対発生しません。 0/3=0です。