質問: 0){ System.out.println("答えは"+ 100/n); }else { System.out.println("0で除算出来ません"); } } //例外発生時の処理 catch(InputMismatchException e){ System.out.println("数値ではありません。"); } //例外に関係なく実行する finally { System.out.println("終了"); } } } ``` **現在上記のような入力した数字が100を割り切れるかというコードを書いており0を打ち込んだ時以外思い通りに動きます。 ですが0を入力した場合だけ「除算出来ません」ではなく下記のような結果になってしまいます。** 100を入力された数字で除算します 0 終了 Exception in thread "main" java.lang.ArithmeticException: / by zero at Main.main(Main.java:10) if文の条件が悪いのか文章の構成自体が悪いのかと色々考えたのですが解決できないです。 力を貸していただきたいです。よろしくお願い致します。
回答: > > if文の条件が悪いのか文章の構成自体が悪いのかと色々考えたのですが解決できないです。 > > > if文の条件式の左辺`100 % n`は、100を**整数値nで割った**ときの余りを計算する式ですから、nの値が0のときは、**条件式を評価する時点で0による除算が行なわれます**。 例外処理を行なわずに、0除算を避けたいのであれば、if文を以下のように書いてください。 ``` if (n == 0) { System.out.println("0で除算出来ません"); } else if (100 % n == 0) { System.out.println("答えは" + 100 / n); } else { // 余りが出るときの処理をココに書く } ```