回答編集履歴

5

switch を使うコードを追加

2020/10/12 04:52

投稿

kazuma-s
kazuma-s

スコア8224

test CHANGED
@@ -81,3 +81,69 @@
81
81
  数字が全角の1,2、... 9でもよくなりました。
82
82
 
83
83
  これでいいんでしょうか?
84
+
85
+
86
+
87
+ **追記2**
88
+
89
+ 数字で「12」がいいのなら、漢数字の「十二」もいいのではないでしょうか?
90
+
91
+ ```Java
92
+
93
+ public class StringToInt2 {
94
+
95
+ static final String[] s = {
96
+
97
+ "","一","二","三","四","五","六","七","八","九","十","十一","十二"
98
+
99
+ };
100
+
101
+ public static void main(String[] args) {
102
+
103
+ int n = 0, days = 0;
104
+
105
+ if (args.length == 1)
106
+
107
+ try {
108
+
109
+ n = Integer.parseInt(args[0]);
110
+
111
+ } catch (NumberFormatException e) {
112
+
113
+ n = java.util.Arrays.asList(s).indexOf(args[0]);
114
+
115
+ }
116
+
117
+ switch (n) {
118
+
119
+ case 1: case 3: case 5: case 7: case 8: case 10: case 12:
120
+
121
+ days = 31; break;
122
+
123
+ case 2:
124
+
125
+ days = 28; break;
126
+
127
+ case 4: case 6: case 9: case 11:
128
+
129
+ days = 30; break;
130
+
131
+ }
132
+
133
+ if (days > 0)
134
+
135
+ System.out.println(args[0] + "月は" + days + "日あります。");
136
+
137
+ else
138
+
139
+ System.out.println("不正な値です。");
140
+
141
+ }
142
+
143
+ }
144
+
145
+ ```
146
+
147
+ 例外処理も switch も使っていますが、このコードは問題の解答そのものではありません。
148
+
149
+ 中身を理解して、漢数字が「九」までというのなら自分で修正してください。

4

質問に対する回答でなかったので追記3を削除

2020/10/12 04:52

投稿

kazuma-s
kazuma-s

スコア8224

test CHANGED
@@ -81,79 +81,3 @@
81
81
  数字が全角の1,2、... 9でもよくなりました。
82
82
 
83
83
  これでいいんでしょうか?
84
-
85
-
86
-
87
- **追記3**
88
-
89
- `java StringToInt2 十二` は不正な値にするんですよね。
90
-
91
- ```Java
92
-
93
- public class StringToInt2 {
94
-
95
- public static void main(String[] args) {
96
-
97
- int days = 0;
98
-
99
- char c = 0;
100
-
101
- if (args.length == 1 && args[0].length() == 1) {
102
-
103
- c = args[0].charAt(0);
104
-
105
- try {
106
-
107
- switch (Integer.parseInt(args[0])) {
108
-
109
- case 1: case 3: case 5: case 7: case 8:
110
-
111
- days = 31; break;
112
-
113
- case 2:
114
-
115
- days = 28; break;
116
-
117
- case 4: case 6: case 9:
118
-
119
- days = 30; break;
120
-
121
- }
122
-
123
- } catch (NumberFormatException e) {
124
-
125
- switch (c) {
126
-
127
- case '一': case '三': case '五': case '七': case '八':
128
-
129
- days = 31; break;
130
-
131
- case '二':
132
-
133
- days = 28; break;
134
-
135
- case '四': case '六': case '九':
136
-
137
- days = 30; break;
138
-
139
- }
140
-
141
- }
142
-
143
- }
144
-
145
- if (days > 0)
146
-
147
- System.out.println(c + "月は" + days + "日あります。");
148
-
149
- else
150
-
151
- System.out.println("不正な値です。");
152
-
153
- }
154
-
155
- }
156
-
157
-
158
-
159
- ```

3

switch を使ったコードを追加

2020/10/11 06:58

投稿

kazuma-s
kazuma-s

スコア8224

test CHANGED
@@ -81,3 +81,79 @@
81
81
  数字が全角の1,2、... 9でもよくなりました。
82
82
 
83
83
  これでいいんでしょうか?
84
+
85
+
86
+
87
+ **追記3**
88
+
89
+ `java StringToInt2 十二` は不正な値にするんですよね。
90
+
91
+ ```Java
92
+
93
+ public class StringToInt2 {
94
+
95
+ public static void main(String[] args) {
96
+
97
+ int days = 0;
98
+
99
+ char c = 0;
100
+
101
+ if (args.length == 1 && args[0].length() == 1) {
102
+
103
+ c = args[0].charAt(0);
104
+
105
+ try {
106
+
107
+ switch (Integer.parseInt(args[0])) {
108
+
109
+ case 1: case 3: case 5: case 7: case 8:
110
+
111
+ days = 31; break;
112
+
113
+ case 2:
114
+
115
+ days = 28; break;
116
+
117
+ case 4: case 6: case 9:
118
+
119
+ days = 30; break;
120
+
121
+ }
122
+
123
+ } catch (NumberFormatException e) {
124
+
125
+ switch (c) {
126
+
127
+ case '一': case '三': case '五': case '七': case '八':
128
+
129
+ days = 31; break;
130
+
131
+ case '二':
132
+
133
+ days = 28; break;
134
+
135
+ case '四': case '六': case '九':
136
+
137
+ days = 30; break;
138
+
139
+ }
140
+
141
+ }
142
+
143
+ }
144
+
145
+ if (days > 0)
146
+
147
+ System.out.println(c + "月は" + days + "日あります。");
148
+
149
+ else
150
+
151
+ System.out.println("不正な値です。");
152
+
153
+ }
154
+
155
+ }
156
+
157
+
158
+
159
+ ```

2

例外処理を使ったコードを追加

2020/10/11 06:54

投稿

kazuma-s
kazuma-s

スコア8224

test CHANGED
@@ -31,3 +31,53 @@
31
31
  ```
32
32
 
33
33
  例外処理を使っていないから、これはダメですね。
34
+
35
+
36
+
37
+ **追記**
38
+
39
+ 例外処理を使ってみました。
40
+
41
+ ```Java
42
+
43
+ class Test {
44
+
45
+ static final int[] days = { 31, 28, 31, 30, 31, 30, 31, 31, 30 };
46
+
47
+
48
+
49
+ public static void main(String[] args) {
50
+
51
+ int i = -1;
52
+
53
+ if (args.length == 1 && args[0].length() == 1)
54
+
55
+ try {
56
+
57
+ i = Integer.parseInt(args[0]) - 1;
58
+
59
+ }
60
+
61
+ catch (NumberFormatException e) {
62
+
63
+ i = "一二三四五六七八九".indexOf(args[0]);
64
+
65
+ }
66
+
67
+ if (i < 0)
68
+
69
+ System.out.println("不正な値です。");
70
+
71
+ else
72
+
73
+ System.out.println(args[0] + "月は" + days[i] + "日あります。");
74
+
75
+ }
76
+
77
+ }
78
+
79
+ ```
80
+
81
+ 数字が全角の1,2、... 9でもよくなりました。
82
+
83
+ これでいいんでしょうか?

1

コードの修正

2020/10/09 00:26

投稿

kazuma-s
kazuma-s

スコア8224

test CHANGED
@@ -2,27 +2,27 @@
2
2
 
3
3
  class Test {
4
4
 
5
- static final int[] d = { 31, 28, 31, 30, 31, 30, 31, 31, 30 };
5
+ static final int[] days = { 31, 28, 31, 30, 31, 30, 31, 31, 30 };
6
6
 
7
7
 
8
8
 
9
9
  public static void main(String[] args) {
10
10
 
11
- int days = 0;
11
+ int i = -1;
12
12
 
13
- if (args.length == 1 && args[0].length() == 1) {
13
+ if (args.length == 1 && args[0].length() == 1 &&
14
14
 
15
- int i = "123456789".indexOf(args[0]);
15
+ (i = "123456789".indexOf(args[0])) < 0)
16
16
 
17
- if (i < 0) i = "一二三四五六七八九".indexOf(args[0]);
17
+ i = "一二三四五六七八九".indexOf(args[0]);
18
18
 
19
- if (i >= 0) days = d[i];
19
+ if (i < 0)
20
20
 
21
- }
21
+ System.out.println("不正な値です。");
22
22
 
23
- if (days == 0) System.out.println("不正な値です。");
23
+ else
24
24
 
25
- else System.out.println(args[0] + "月は" + days + "日あります。");
25
+ System.out.println(args[0] + "月は" + days[i] + "日あります。");
26
26
 
27
27
  }
28
28