回答編集履歴

1

追加

2018/05/03 12:23

投稿

swordone
swordone

スコア20651

test CHANGED
@@ -1,3 +1,107 @@
1
1
  args.lengthが0の時にifを実行してメッセージを表示しても、それ以降のコードは普通に実行してしまいます。
2
2
 
3
3
  なので、args.length==0の場合を抜けるときにreturnしてmainメソッドから抜けてしまうか、続くコードをelseブロックにしてとにかくargs.length==0の時に`args[0]`にアクセスしないようにしないといけません。
4
+
5
+
6
+
7
+ ```java
8
+
9
+ public class NameOfMonths {
10
+
11
+ public static void main(String[] args) {
12
+
13
+
14
+
15
+ String[] month;
16
+
17
+ month = new String[]{"January","February","March","April",
18
+
19
+ "May","June","July","August","September","October",
20
+
21
+ "November","December"};
22
+
23
+
24
+
25
+ if(args.length == 0) {
26
+
27
+ System.out.println("使用方法: java NamesOfMonths <number>");
28
+
29
+ return; //ここでmainメソッドから抜ける
30
+
31
+ }
32
+
33
+ int i = Integer.parseInt(args[0]);
34
+
35
+ if(i>12){
36
+
37
+ System.out.println("引数には、1~12の範囲の整数を指定してください");
38
+
39
+ System.out.println("使用方法: java NamesOfMonths <number>");
40
+
41
+ }else{
42
+
43
+
44
+
45
+ System.out.println(month[i-1]);
46
+
47
+
48
+
49
+ }
50
+
51
+ }
52
+
53
+ }
54
+
55
+ ```
56
+
57
+
58
+
59
+ ```java
60
+
61
+ public class NameOfMonths {
62
+
63
+ public static void main(String[] args) {
64
+
65
+
66
+
67
+ String[] month;
68
+
69
+ month = new String[]{"January","February","March","April",
70
+
71
+ "May","June","July","August","September","October",
72
+
73
+ "November","December"};
74
+
75
+
76
+
77
+ if(args.length == 0) {
78
+
79
+ System.out.println("使用方法: java NamesOfMonths <number>");
80
+
81
+ } else { // args.lengthが0の時にこれ以降を通らないようにする
82
+
83
+ int i = Integer.parseInt(args[0]);
84
+
85
+ if(i>12){
86
+
87
+ System.out.println("引数には、1~12の範囲の整数を指定してください");
88
+
89
+ System.out.println("使用方法: java NamesOfMonths <number>");
90
+
91
+ }else{
92
+
93
+
94
+
95
+ System.out.println(month[i-1]);
96
+
97
+
98
+
99
+ }
100
+
101
+ }
102
+
103
+ }
104
+
105
+ }
106
+
107
+ ```