回答編集履歴
3
Date-Time API
answer
CHANGED
@@ -13,4 +13,35 @@
|
|
13
13
|
System.out.println("誤りがあります");
|
14
14
|
}
|
15
15
|
|
16
|
+
```
|
17
|
+
---
|
18
|
+
|
19
|
+
ちなみに、Java8のDate-Time APIを使って書いた例がこうなります。
|
20
|
+
```java
|
21
|
+
import java.time.DateTimeException;
|
22
|
+
import java.time.LocalDate;
|
23
|
+
import java.time.format.DateTimeFormatter;
|
24
|
+
import java.util.InputMismatchException;
|
25
|
+
import java.util.Scanner;
|
26
|
+
|
27
|
+
public class InputCal2 {
|
28
|
+
|
29
|
+
public static void main(String[] args) {
|
30
|
+
try (Scanner s = new Scanner(System.in)){
|
31
|
+
System.out.print("年を入力:");
|
32
|
+
int year = s.nextInt();
|
33
|
+
System.out.print("月を入力:");
|
34
|
+
int month = s.nextInt();
|
35
|
+
System.out.print("日を入力:");
|
36
|
+
int dayOfMonth = s.nextInt();
|
37
|
+
LocalDate date = LocalDate.of(year, month, dayOfMonth);
|
38
|
+
System.out.println(date.format(DateTimeFormatter.ofPattern("yyyy年M月d日(E)")));
|
39
|
+
} catch (InputMismatchException e) { //s.nextInt()からの例外
|
40
|
+
System.out.println("数値ではない文字が入力されました");
|
41
|
+
} catch (DateTimeException e) { //LocalDate.of()からの例外
|
42
|
+
System.out.println("入力された数値に誤りがあります");
|
43
|
+
}
|
44
|
+
}
|
45
|
+
|
46
|
+
}
|
16
47
|
```
|
2
Stringということに今気づいた
answer
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
Calendarクラスを使うのが便利かと思います。厳密モードにすれば、ありえない数値が入った状態でCalendarの値を取得しようとした時に例外が発生します。
|
2
2
|
```java
|
3
|
-
//年月日の入力後
|
3
|
+
//年月日の入力後、Integer.parseInt()などで数値に変換して(変数名はそのままになってしまっています)
|
4
4
|
Calendar calendar = Calendar.getInstance();
|
5
5
|
calendar.setLenient(false); //厳密モードに切り替え
|
6
6
|
calendar.set(Calendar.YEAR, year);
|
1
月フィールドでミス
answer
CHANGED
@@ -4,7 +4,7 @@
|
|
4
4
|
Calendar calendar = Calendar.getInstance();
|
5
5
|
calendar.setLenient(false); //厳密モードに切り替え
|
6
6
|
calendar.set(Calendar.YEAR, year);
|
7
|
-
calendar.set(Calendar.MONTH, month);
|
7
|
+
calendar.set(Calendar.MONTH, month - 1); //月のフィールドは0始まりなので1引かなければいけない
|
8
8
|
calendar.set(Calendar.DATE, day);
|
9
9
|
DateFormat sdf = new SimpleDateFormat("yyyy'年'M'月'd'日('E')'");
|
10
10
|
try{
|