引数として生年月日を渡したらそれを元に年齢を計算するプログラムを作りです。
引数のパターンは以下の3つのみから計算させるようにしたいです。
・yyyy/MM/dd
・yyyy.MM.dd
・yyyyMMdd
数値以外の値が入った場合、未来の日付が指定された場合はエラーにします。
以下のコードまでは書けましたが、tryの部分の処理が出来ていません。
ご教示いただければ幸いです。
Java
1import java.time.LocalDate; 2import java.time.format.DateTimeFormatter; 3import java.time.format.DateTimeParseException; 4import java.time.temporal.ChronoUnit; 5 6public class Age { 7 public static void main(String[] args) { 8 9 if (args.length != 1) { 10 System.err.println("err"); 11 System.exit(1); 12 return; 13 } 14 15 DateTimeFormatter formatter1 = DateTimeFormatter.ofPattern("yyyy/MM/dd"); 16 DateTimeFormatter formatter2 = DateTimeFormatter.ofPattern("yyyy.MM.dd"); 17 DateTimeFormatter formatter3 = DateTimeFormatter.ofPattern("yyyyMMdd"); 18 19 // LocalDateを取得 20 LocalDate birthDate; 21 22 try { 23 birthDate = LocalDate.parse(args[0], formatter1); 24 } 25 catch ( DateTimeParseException e) { 26 System.err.println("err"); 27 System.err.println(e); 28 System.exit(1); 29 return; 30 } 31 32 // 現在の日付を取得 33 LocalDate nowDate = LocalDate.now(); 34 35 if (nowDate.compareTo(birthDate) >= 0) { 36 // 年齢を計算 37 long age = ChronoUnit.YEARS.between(birthDate, nowDate); 38 // 年齢を出力 39 System.out.println("年齢:" + age +); 40 System.exit(0); 41 } 42 else { 43 System.err.println("err"); 44 System.exit(1); 45 } 46 } 47} 48