回答編集履歴

2

追記

2020/05/23 09:00

投稿

LouiS0616
LouiS0616

スコア35668

test CHANGED
@@ -1,3 +1,37 @@
1
1
  nextIntで例外が生じたときflgの値は書き換えられません。
2
2
 
3
3
  この場合、値は初期値の0のままであり、ループから脱出します。初期値を適切に変更して下さい。
4
+
5
+
6
+
7
+ コメントを受けて
8
+
9
+ ---
10
+
11
+ 一点見落としていました。
12
+
13
+
14
+
15
+ nextIntに失敗した場合、バッファに食い残しができます。
16
+
17
+ その食い残しを何度も何度もnextIntで読もうとしてしまうので、無限ループします。
18
+
19
+
20
+
21
+ catch節で一行読んで捨てておけば良いでしょう。
22
+
23
+ ```Java
24
+
25
+ try {
26
+
27
+ flg = scan.nextInt();
28
+
29
+ }catch(InputMismatchException e) {
30
+
31
+ System.out.println("入力エラーです"); // ここは標準エラー出力がいいかも
32
+
33
+ scan.nextLine();
34
+
35
+ }
36
+
37
+ ```

1

修正

2020/05/23 09:00

投稿

LouiS0616
LouiS0616

スコア35668

test CHANGED
@@ -1,3 +1,3 @@
1
- 数値のパースに失敗したときflgの値は書き換えられません。
1
+ nextIntで例外が生じたときflgの値は書き換えられません。
2
2
 
3
- この場合値は初期値の0のままであり、ループから脱出します。初期値を適切に変更して下さい。
3
+ この場合値は初期値の0のままであり、ループから脱出します。初期値を適切に変更して下さい。