質問編集履歴

4

修正中コードの追記3

2020/04/21 06:56

投稿

fall
fall

スコア12

test CHANGED
File without changes
test CHANGED
@@ -86,9 +86,13 @@
86
86
 
87
87
 
88
88
 
89
-
89
+ if (args.length != 1) {
90
90
 
91
- int birthdate = args[0];
91
+ System.err.println("must have only 1 argument");
92
+
93
+ return;
94
+
95
+ }
92
96
 
93
97
 
94
98
 
@@ -96,21 +100,21 @@
96
100
 
97
101
 
98
102
 
99
- LocalDate localBirdhdate = LocalDate.parse(birthdate, formatter);
103
+ // LocalDateを生成
100
-
101
-
102
104
 
103
105
  try {
104
106
 
105
- args.length;
107
+ LocalDate localBirdhdate = LocalDate.parse(args[0], formatter);
106
108
 
107
109
  }
108
110
 
109
- catch ( DateTimeParseException ne )
111
+ catch ( DateTimeParseException e )
110
112
 
111
113
  {
112
114
 
113
115
  System.err.println("Error");
116
+
117
+ System.err.println(e);
114
118
 
115
119
  return;
116
120
 
@@ -130,9 +134,21 @@
130
134
 
131
135
 
132
136
 
133
- // 年齢
137
+ if (age >= 0) {
134
138
 
139
+ // 年齢
140
+
135
- System.out.println("年齢: " + age);
141
+ System.out.println("年齢: " + age);
142
+
143
+ } else {
144
+
145
+ System.err.println("The date is the future");
146
+
147
+ }
148
+
149
+ }
150
+
151
+ }
136
152
 
137
153
  }
138
154
 

3

修正中コードの追記2

2020/04/21 06:56

投稿

fall
fall

スコア12

test CHANGED
File without changes
test CHANGED
@@ -86,25 +86,31 @@
86
86
 
87
87
 
88
88
 
89
+
90
+
91
+ int birthdate = args[0];
92
+
93
+
94
+
89
95
  DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy/MM/dd");
90
96
 
91
97
 
92
98
 
93
- // 生年月日を表す文字列から、LocalDateを生成
99
+ LocalDate localBirdhdate = LocalDate.parse(birthdate, formatter);
100
+
101
+
94
102
 
95
103
  try {
96
104
 
97
- LocalDate localBirdhdate = LocalDate.parse(args.length, formatter);
105
+ args.length;
98
106
 
99
107
  }
100
108
 
101
- catch ( DateTimeParseException e )
109
+ catch ( DateTimeParseException ne )
102
110
 
103
111
  {
104
112
 
105
113
  System.err.println("Error");
106
-
107
- System.err.println(e);
108
114
 
109
115
  return;
110
116
 
@@ -134,4 +140,6 @@
134
140
 
135
141
 
136
142
 
143
+
144
+
137
145
  ```

2

修正中コードの追記

2020/04/21 06:22

投稿

fall
fall

スコア12

test CHANGED
File without changes
test CHANGED
@@ -65,3 +65,73 @@
65
65
  }
66
66
 
67
67
  ```
68
+
69
+
70
+
71
+
72
+
73
+ ```修正中コード
74
+
75
+ import java.time.LocalDate;
76
+
77
+ import java.time.format.DateTimeFormatter;
78
+
79
+ import java.time.temporal.ChronoUnit;
80
+
81
+
82
+
83
+ public class Age {
84
+
85
+ public static void main(String[] args) {
86
+
87
+
88
+
89
+ DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy/MM/dd");
90
+
91
+
92
+
93
+ // 生年月日を表す文字列から、LocalDateを生成
94
+
95
+ try {
96
+
97
+ LocalDate localBirdhdate = LocalDate.parse(args.length, formatter);
98
+
99
+ }
100
+
101
+ catch ( DateTimeParseException e )
102
+
103
+ {
104
+
105
+ System.err.println("Error");
106
+
107
+ System.err.println(e);
108
+
109
+ return;
110
+
111
+ }
112
+
113
+
114
+
115
+ // 現在の日付を取得
116
+
117
+ LocalDate nowDate = LocalDate.now();
118
+
119
+
120
+
121
+ // 年齢を計算する
122
+
123
+ long age = ChronoUnit.YEARS.between(localBirdhdate, nowDate);
124
+
125
+
126
+
127
+ // 年齢
128
+
129
+ System.out.println("年齢: " + age);
130
+
131
+ }
132
+
133
+ }
134
+
135
+
136
+
137
+ ```

1

引数の扱いの修正

2020/04/21 05:55

投稿

fall
fall

スコア12

test CHANGED
@@ -1 +1 @@
1
- [Java]生年月日を渡したら年齢を計算するプログラムのエラーパターン
1
+ [Java]生年月日を渡したら年齢を計算するプログラム
test CHANGED
@@ -1,10 +1,10 @@
1
- 引数として生年月日を渡したらそれを元に年齢を計算するプログラムを作りました
1
+ 引数として生年月日を渡したらそれを元に年齢を計算するプログラムを作りです
2
2
 
3
- 生年月日から年齢を計算することは出来ましたが、ここから生年月日が不正な場合のエラーパターンを作成するにはどうすればよいでしょうか。
3
+ 予め生年月日を記載して年齢を計算することは出来ましたが、ここから生年月日を渡す(args)処理と生年月日が不正な場合のエラーパターンを作成するにはどうすればよいでしょうか。
4
4
 
5
5
  生年月日が数値以外の場合、現在の日付より未来の場合など起こりうるあらゆるパターンを作りたいです。
6
6
 
7
- また、エラーの場合メッセージも出すようにしたいです。
7
+ また、エラーの場合にはメッセージも出すようにしたいです。
8
8
 
9
9
  ご教示いただけますと幸いです。
10
10