前提・実現したいこと
こんにちは。以下のように出力するJavaプログラムを作りたいのですが、上手く動きません。
$ javac Main.java
$ java Main
計算を開始します (1/3)
5 3
5 + 3 = 8
5 - 3 = 2
5 * 3 = 15
5 / 3 = 1
正常に動作した回数: 1
例外が発生した回数: 0
計算を開始します (2/3)
7 a
入力が int 型ではないため,エラーが発生しました
正常に動作した回数: 1
例外が発生した回数: 1
計算を開始します (3/3)
6 0
6 + 0 = 6
6 - 0 = 6
6 * 0 = 0
ゼロで除算しようとしたため,エラーが発生しました
正常に動作した回数: 1
例外が発生した回数: 2
発生している問題・エラーメッセージ
正常に動作したときにエラーが起きてしまいます。
エラーメッセージ
計算を開始します(1/3)
1 2
1+2=3
1-2=-1
1*2=2
1/2=0
正常1
例外0
計算を開始します(2/3)
Exception in thread "main" java.util.NoSuchElementException
at java.base/java.util.Scanner.throwFor(Scanner.java:937)
at java.base/java.util.Scanner.next(Scanner.java:1594)
at java.base/java.util.Scanner.nextInt(Scanner.java:2258)
at java.base/java.util.Scanner.nextInt(Scanner.java:2212)
at Calc.calc(Calc.java:5)
at Lesson11_3.main(Lesson11_3.java:10)
該当のソースコード
public class Main {
public static void main(String[] args) {
// ============ 処理の追加 ==============
int count = 0;
int error = 0;
for(int i = 1; i < 4; i++){ System.out.println("計算を開始します("+ i +"/3)"); try{ Calc.calc(); count++; }catch(java.util.InputMismatchException e){ System.out.println("入力がint型ではないため、エラーが発生しました"); error++; }catch(ArithmeticException e){ System.out.println("ゼロで除算しようとしたため、エラーが発生しました"); error++; } System.out.println("正常"+ count); System.out.println("例外"+ error);
}
}
}
public class Calc {
public static void calc() {
java.util.Scanner scanner = new java.util.Scanner(System.in);
int str1 = scanner.nextInt(), str2 = scanner.nextInt();
int sum = str1 + str2;
System.out.println(str1 + "+" + str2 + "=" + sum);
int sub = str1 - str2;
System.out.println(str1 + "-" + str2 + "=" + sub);
int mul = str1 * str2;
System.out.println(str1 + "*" + str2 + "=" + mul);
int div = str1 / str2;
System.out.println(str1 + "/" + str2 + "=" + div);
scanner.close();
}
}
ソースコード java
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2020/06/14 15:51