引数として生年月日を渡したらそれを元に年齢を計算するプログラムを作りました。
引数がyyyy/MM/dd以外の書き方(yyyy-MM-dd、yyyMMdd)でも受け付けるよう修正したいです。
どのように修正すればいいでしょうか。
ご教示いただけますと幸いです。
コード2種類のうち下の方は編集中のものです。動作はしていません。
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 if (args.length != 1) { 9 System.err.println("Error"); 10 return; 11 } 12 13 DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy/MM/dd"); 14 15 LocalDate birthDay; 16 // 生年月日を表す文字列から、LocalDateを生成 17 try { 18 birthDay = LocalDate.parse(args[0], formatter); 19 } catch (DateTimeParseException e) { 20 System.err.println("Error"); 21 System.err.println(e); 22 return; 23 } 24 25 // 現在の日付を取得 26 LocalDate nowDate = LocalDate.now(); 27 28 if (nowDate.compareTo(birthDay) >= 0) { 29 // 年齢を計算する 30 long age = ChronoUnit.YEARS.between(birthDay , nowDate); 31 // 年齢 32 System.out.println("年齢は" + age); 33 } else { 34 System.err.println("Error"); 35 } 36 } 37}
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 // 正規表現のパターンを作成 16 Pattern p = Pattern.compile("^[0-9]+$"); 17 Matcher m = p.matcher(str); 18 19 DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd"); 20 21 // LocalDateを取得 22 LocalDate birthDay; 23 24 try { 25 birthDay = LocalDate.parse(args[0], formatter); 26 } 27 catch ( DateTimeParseException e) { 28 System.err.println("Err"); 29 System.err.println(e); 30 System.exit(1); 31 return; 32 } 33 34 35 // 現在の日付を取得 36 LocalDate nowDate = LocalDate.now(); 37 38 if (nowDate.compareTo(birthDay) >= 0) { 39 // 年齢を計算する 40 long age = ChronoUnit.YEARS.between(birthDay, nowDate); 41 // 年齢を出力 42 System.out.println("年齢は" + age); 43 System.exit(0); 44 } 45 else { 46 System.err.println("Err"); 47 System.exit(1); 48 } 49 } 50} 51
回答2件
あなたの回答
tips
プレビュー