teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

自己解決したようなので

2020/10/21 07:24

投稿

momon-ga
momon-ga

スコア4828

answer CHANGED
@@ -8,4 +8,35 @@
8
8
  - 例外が起こらないように整数チェックを行う
9
9
  - 2回分の例外補足をする(愚直に2回書くか、関数化するか)
10
10
 
11
- いうにコードを変更する必要があります。
11
+ ずれかのようにコードを変更する必要があります。
12
+
13
+ ```hava
14
+ public static void main(String[] args) {
15
+ Integer num1;
16
+ Integer num2;
17
+
18
+ try {
19
+ num1 = toInteger(args[0]);
20
+ num2 = toInteger(args[1]);
21
+
22
+ int sum = num1 + num2; // どちらかが整数でないなら、NullPointer
23
+ System.out.println(args[0] + "と" + args[1] + "の和は" + sum + "です。");
24
+
25
+ } catch (ArrayIndexOutOfBoundsException e) {
26
+ /* 引数存在チェック */
27
+ System.out.println("コマンドライン引数の数は2つにしてください。");
28
+ } catch (NullPointerException e) {
29
+ // エラーメッセージは表示済みなので何もしない
30
+ }
31
+
32
+ }
33
+
34
+ private static Integer toInteger(String a) {
35
+ try {
36
+ return Integer.parseInt(a);
37
+ } catch (NumberFormatException nfe) {
38
+ System.out.println("整数を入力してください:" + a);
39
+ return null;
40
+ }
41
+ }
42
+ ```