// 課題)平成25年のカレンダーを作成する。 // 作成したい月をキーボド入力で指定すると、その月のカレンダーが出力されるコードを作成しなさい。 // ただし、以下の情報は既知であるものとする。 // ・1月1日は火曜日であること // ・2月は28日、4.6.9.11月は30日 // ・1.3.5.7.8..10.12月は31日であること。 //  <ヒント> // 6月のカレンダーを作成するなら、6月1日が何曜日から始まるか知らなくてはなりません。 // そのためには、1月1日から5月31日までに何日あったかを計算すればよい。 // それを7で割った余りを求めれば、何曜日から始まるかがわかる。 // 参考までに作成したい月の前の月までの日数sum-daysと、作成したい月の日数daysを求めるコードを以下に記する。 // switch(month){ // case 1: // case 3: // case 5: // case 7 // case 8: // case 10: // case 12: // days=31: // break: // case 2: // days=28: // break: // case 4: // case 6: // case 9: // case 11: // days=30: // break: // } // switch(month){ // case 12: // sum-days +=30: // case 11: // sum-days +=31 // case 10: // sum-days +=30 // case 9 // sum-days +=31 // case 8: // sum-days +=31 // case 7: // sum-days +=30 // case 6: // sum-days +=31 // case 5: // sum-days +=30 // case 4: // sum-days +=31 // case 3: // sum-days +=28 // case 2: // sum-days +=31 // case 1: // sum-days +=0: // } import java.io.*; public class Sample7 { public static void main (String[] args) throws IOException { BufferedReader br = new BufferedReader( new InputStreamReader(System.in)); int month = 0; while( month < 1 || month > 12 ){ System.out.print("表示させたい月を半角数字で入力してください。: "); String buf = br.readLine(); month = Integer.parseInt(buf); } Input shitei = new Input( month ); shitei.Month(); } } class Input { int month; int days; int sum; Input(int _month){ month = _month; switch(month){ case 1:sum=0;days=31;break; case 2:sum=31;days=28;break; case 3:sum=59;days=31;break; case 4:sum=90;days=30;break; case 5:sum=120;days=31;break; case 6:sum=151;days=30;break; case 7:sum=181;days=31;break; case 8:sum=212;days=31;break; case 9:sum=243;days=30;break; case 10:sum=273;days=31;break; case 11:sum=304;days=30;break; case 12:sum=334;days=31;break; } } void Month(){ int youbi = 2; //2013.1.1は火曜日である。(日 = 0, 月 = 1, 火 = 2, 水 = 3, 木 = 4, 金 = 5, 土 = 6) int waku; youbi = (youbi += sum%7)%7; System.out.println( "\n" + month + "月のカレンダー\n" + "日" + "\t" + "月" + "\t" + "火" + "\t" + "水" + "\t" + "木" + "\t" + "金" + "\t" + "土" + "\t" ); for (waku=1; waku <= days+youbi; waku++){ if( waku-youbi <= 0 ){ System.out.print("\t"); } else { if( (waku-youbi)%7 == (7 - youbi)%7 ){ System.out.printf("%2d%n" , waku-youbi ); } else { System.out.printf("%2d\t" , waku-youbi ); } } } System.out.println("\n"); } }