java
1
2// 課題
3//・Calendarクラスや一切のimportの使用禁止。
4//
5//・1月1日を日曜日からスタートし、
6// 1月31日が火曜日で終わるので、水木金土の空白を作り、
7// 続く2月のカレンダーは日月火の空白を設け
8// 水曜日の位置から1日をスタートさせる。
9// 以下その手順を12月まで。
10//
11//・例外処理、うるう年判定、ツェラーの公式は使わない。
12//
13//・クラス分けして、メインメソッドから呼び出す方式。
14
15 public static void main(String[] args) {
16
17 //1月から12月のカレンダーを表示する
18 for (int i = 1; i <= 12; i++) {
19 func(i);
20 if (i < 12) {
21 //毎月行端と月の区切りで計2行改行
22 System.out.println();
23 System.out.println();
24 }
25 }
26 }
27
28
java
1 //※条件1月1日が日曜日から合計日数で求める
2 //month月1日の曜日を0-6の数値で返す
3 public static int youbi(int month) {
4
5 int sum = 0;
6 for (int i = 1; i <= month - 1; i++) {
7 for (int j = 1; j <= 31; j++) {
8 if (i == 2) {
9 if (j >= 29) {
10 continue;
11 }
12 } else if (i == 4 || i == 6 || i == 9 || i == 11) {
13 if (j >= 31) {
14 continue;
15 }
16 }
17 sum++;
18 }
19 }
20 return sum % 7;
21 }
22
java
1 //month月のカレンダーを出力する
2 public static void func(int month) {
3
4 String[] Week = { "日", "月", "火", "水", "木", "金", "土" };
5
6 //月の表示
7 System.out.println(month + "月");
8
9 //曜日の表示
10 for (String i : Week)
11 System.out.print(i);
12 System.out.println();
13
14 //month月1日の曜日をyoubiメソッドから求める
15 //youbiメソッドで得た値分マイナスからスタートさせ月初の曜日をずらす
16 //その後は月初から月末までの日を土曜日で折り返して出力させる
17 int count = 0;
18 for (int i = 1 - youbi(month); i <= 31; i++) {
19 count++;
20 if (i < 1) {
21 System.out.print(" ");
22 continue;
23 }
24 //2月は28日で終了
25 if (month == 2) {
26 if (i >= 29) {
27 continue;
28 }
29 //4月6月9月11月は30日で終了
30 } else if (month == 4 || month == 6 || month == 9 || month == 11) {
31 if (i >= 31) {
32 continue;
33 }
34 }
35 //その他は31日までで終了
36
37 //日付を出力
38 System.out.printf("%02d", i);
39
40 //月初の空白を含む7日毎に(土曜日で)改行
41 if (count % 7 == 0)
42 System.out.println();
43 }
44 }
出力結果

追加修正しました
1-12月までの出力(main()のfor文のi=1を変えれば月指定出来ます)
月末日の処理が間違っていたので修正しました