class Date { int year, month, day; } class Foo { public static void main (String[] args) { Date d1 = new Date(); d1.year = 1999; d1.month = 12; d1.day = 31; System.out.println(is_correct_day(d1)); Date d2 = new Date(); d2.year = 2000; d2.month = 1; d2.day = 33; System.out.println(is_correct_day(d2)); Date d3 = new Date(); d3.year = 2000; d3.month = 2; d3.day = 29; System.out.println(is_correct_day(d3)); } public static boolean is_correct_day (Date d) { // 各月の最大日(max_day[0]は使わない) int[] max_day = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; if ((d.year%4==0 && d.year%100!=0) || (d.year%400==0)) { max_day[2] = 29; // うるう年の2月は29日まである } return (1<=d.month && d.month<=12) && (1<=d.day && d.day<=max_day[d.month]); } } /* 3章の内容を使うと,is_correct_day をstaticでないメソッドとして 定義できる.こちらの方がJava のプログラムとして自然. */ /* class Date { int year, month, day; public boolean is_correct_day () { int[] max_day = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; if ((year%4==0 && year%100!=0) || (year%400==0)) { max_day[2] = 29; } return (1<=month && month<=12) && (1<=day && day<=max_day[month]); } public static void main (String[] args) { Date d1 = new Date(); d1.year = 1999; d1.month = 12; d1.day = 31; System.out.println(d1.is_correct_day()); Date d2 = new Date(); d2.year = 2000; d2.month = 1; d2.day = 33; System.out.println(d2.is_correct_day()); Date d3 = new Date(); d3.year = 2000; d3.month = 2; d3.day = 29; System.out.println(d3.is_correct_day()); } } */