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

回答編集履歴

5

switch を使うコードを追加

2020/10/12 04:52

投稿

kazuma-s
kazuma-s

スコア8222

answer CHANGED
@@ -39,4 +39,37 @@
39
39
  }
40
40
  ```
41
41
  数字が全角の1,2、... 9でもよくなりました。
42
- これでいいんでしょうか?
42
+ これでいいんでしょうか?
43
+
44
+ **追記2**
45
+ 数字で「12」がいいのなら、漢数字の「十二」もいいのではないでしょうか?
46
+ ```Java
47
+ public class StringToInt2 {
48
+ static final String[] s = {
49
+ "","一","二","三","四","五","六","七","八","九","十","十一","十二"
50
+ };
51
+ public static void main(String[] args) {
52
+ int n = 0, days = 0;
53
+ if (args.length == 1)
54
+ try {
55
+ n = Integer.parseInt(args[0]);
56
+ } catch (NumberFormatException e) {
57
+ n = java.util.Arrays.asList(s).indexOf(args[0]);
58
+ }
59
+ switch (n) {
60
+ case 1: case 3: case 5: case 7: case 8: case 10: case 12:
61
+ days = 31; break;
62
+ case 2:
63
+ days = 28; break;
64
+ case 4: case 6: case 9: case 11:
65
+ days = 30; break;
66
+ }
67
+ if (days > 0)
68
+ System.out.println(args[0] + "月は" + days + "日あります。");
69
+ else
70
+ System.out.println("不正な値です。");
71
+ }
72
+ }
73
+ ```
74
+ 例外処理も switch も使っていますが、このコードは問題の解答そのものではありません。
75
+ 中身を理解して、漢数字が「九」までというのなら自分で修正してください。

4

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

2020/10/12 04:52

投稿

kazuma-s
kazuma-s

スコア8222

answer CHANGED
@@ -39,42 +39,4 @@
39
39
  }
40
40
  ```
41
41
  数字が全角の1,2、... 9でもよくなりました。
42
- これでいいんでしょうか?
42
+ これでいいんでしょうか?
43
-
44
- **追記3**
45
- `java StringToInt2 十二` は不正な値にするんですよね。
46
- ```Java
47
- public class StringToInt2 {
48
- public static void main(String[] args) {
49
- int days = 0;
50
- char c = 0;
51
- if (args.length == 1 && args[0].length() == 1) {
52
- c = args[0].charAt(0);
53
- try {
54
- switch (Integer.parseInt(args[0])) {
55
- case 1: case 3: case 5: case 7: case 8:
56
- days = 31; break;
57
- case 2:
58
- days = 28; break;
59
- case 4: case 6: case 9:
60
- days = 30; break;
61
- }
62
- } catch (NumberFormatException e) {
63
- switch (c) {
64
- case '一': case '三': case '五': case '七': case '八':
65
- days = 31; break;
66
- case '二':
67
- days = 28; break;
68
- case '四': case '六': case '九':
69
- days = 30; break;
70
- }
71
- }
72
- }
73
- if (days > 0)
74
- System.out.println(c + "月は" + days + "日あります。");
75
- else
76
- System.out.println("不正な値です。");
77
- }
78
- }
79
-
80
- ```

3

switch を使ったコードを追加

2020/10/11 06:58

投稿

kazuma-s
kazuma-s

スコア8222

answer CHANGED
@@ -39,4 +39,42 @@
39
39
  }
40
40
  ```
41
41
  数字が全角の1,2、... 9でもよくなりました。
42
- これでいいんでしょうか?
42
+ これでいいんでしょうか?
43
+
44
+ **追記3**
45
+ `java StringToInt2 十二` は不正な値にするんですよね。
46
+ ```Java
47
+ public class StringToInt2 {
48
+ public static void main(String[] args) {
49
+ int days = 0;
50
+ char c = 0;
51
+ if (args.length == 1 && args[0].length() == 1) {
52
+ c = args[0].charAt(0);
53
+ try {
54
+ switch (Integer.parseInt(args[0])) {
55
+ case 1: case 3: case 5: case 7: case 8:
56
+ days = 31; break;
57
+ case 2:
58
+ days = 28; break;
59
+ case 4: case 6: case 9:
60
+ days = 30; break;
61
+ }
62
+ } catch (NumberFormatException e) {
63
+ switch (c) {
64
+ case '一': case '三': case '五': case '七': case '八':
65
+ days = 31; break;
66
+ case '二':
67
+ days = 28; break;
68
+ case '四': case '六': case '九':
69
+ days = 30; break;
70
+ }
71
+ }
72
+ }
73
+ if (days > 0)
74
+ System.out.println(c + "月は" + days + "日あります。");
75
+ else
76
+ System.out.println("不正な値です。");
77
+ }
78
+ }
79
+
80
+ ```

2

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

2020/10/11 06:54

投稿

kazuma-s
kazuma-s

スコア8222

answer CHANGED
@@ -14,4 +14,29 @@
14
14
  }
15
15
  }
16
16
  ```
17
- 例外処理を使っていないから、これはダメですね。
17
+ 例外処理を使っていないから、これはダメですね。
18
+
19
+ **追記**
20
+ 例外処理を使ってみました。
21
+ ```Java
22
+ class Test {
23
+ static final int[] days = { 31, 28, 31, 30, 31, 30, 31, 31, 30 };
24
+
25
+ public static void main(String[] args) {
26
+ int i = -1;
27
+ if (args.length == 1 && args[0].length() == 1)
28
+ try {
29
+ i = Integer.parseInt(args[0]) - 1;
30
+ }
31
+ catch (NumberFormatException e) {
32
+ i = "一二三四五六七八九".indexOf(args[0]);
33
+ }
34
+ if (i < 0)
35
+ System.out.println("不正な値です。");
36
+ else
37
+ System.out.println(args[0] + "月は" + days[i] + "日あります。");
38
+ }
39
+ }
40
+ ```
41
+ 数字が全角の1,2、... 9でもよくなりました。
42
+ これでいいんでしょうか?

1

コードの修正

2020/10/09 00:26

投稿

kazuma-s
kazuma-s

スコア8222

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