回答編集履歴
3
インデント修正
answer
CHANGED
|
@@ -27,15 +27,15 @@
|
|
|
27
27
|
// ・・・のようなことをループで表示
|
|
28
28
|
System.out.println(" 日 月 火 水 木 金 土 日 月 火 水 木 金 土 日 月 火 水 木 金 土");
|
|
29
29
|
for(int j = 0; j < 6; j++) {
|
|
30
|
-
|
|
30
|
+
for(int x = 0; x < 3; x++) {
|
|
31
|
-
|
|
31
|
+
for(int k = 0; k < 7; k++) {
|
|
32
|
-
|
|
32
|
+
System.out.print(
|
|
33
|
-
|
|
33
|
+
calArray[i+x][j][k] == null ? " " : calArray[i+x][j][k]
|
|
34
|
-
|
|
34
|
+
);
|
|
35
|
-
|
|
35
|
+
}
|
|
36
|
-
|
|
36
|
+
System.out.print(" ");
|
|
37
|
-
|
|
37
|
+
}
|
|
38
|
-
|
|
38
|
+
System.out.println();
|
|
39
39
|
}
|
|
40
40
|
}
|
|
41
41
|
|
2
雑実装を追加
answer
CHANGED
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
public static String[][] createCalendar
|
|
11
11
|
|
|
12
12
|
最初のループは
|
|
13
|
+
String[][][] calArray = new String[12][][];
|
|
13
14
|
for (int i = month; i < 12; i++) {
|
|
14
15
|
int firstDate = checkFirstDate(year, month);
|
|
15
16
|
// 配列を保存するようにする
|
|
@@ -24,6 +25,18 @@
|
|
|
24
25
|
// calArray[month] calArray[month+1] calArray[month+2] の第一週を表示
|
|
25
26
|
// calArray[month] calArray[month+1] calArray[month+2] の第二週を表示
|
|
26
27
|
// ・・・のようなことをループで表示
|
|
28
|
+
System.out.println(" 日 月 火 水 木 金 土 日 月 火 水 木 金 土 日 月 火 水 木 金 土");
|
|
29
|
+
for(int j = 0; j < 6; j++) {
|
|
30
|
+
for(int x = 0; x < 3; x++) {
|
|
31
|
+
for(int k = 0; k < 7; k++) {
|
|
32
|
+
System.out.print(
|
|
33
|
+
calArray[i+x][j][k] == null ? " " : calArray[i+x][j][k]
|
|
34
|
+
);
|
|
35
|
+
}
|
|
36
|
+
System.out.print(" ");
|
|
37
|
+
}
|
|
38
|
+
System.out.println();
|
|
39
|
+
}
|
|
27
40
|
}
|
|
28
41
|
|
|
29
42
|
```
|
1
追記
answer
CHANGED
|
@@ -1,4 +1,30 @@
|
|
|
1
1
|
なかなか良い課題ですね。
|
|
2
2
|
|
|
3
3
|
簡単に修正するとしたら、`System.out` してる部分を配列に保存するようにします。
|
|
4
|
-
で、1年分のカレンダーができあがったら、まとめて3か月分を表示するようにします。
|
|
4
|
+
で、1年分のカレンダーができあがったら、まとめて3か月分を表示するようにします。
|
|
5
|
+
|
|
6
|
+
データの作成の部分を表示のロジックを分けておくと後々の修正が楽になります。
|
|
7
|
+
```
|
|
8
|
+
public static void createCalendar
|
|
9
|
+
↓ 以下のような実装にする
|
|
10
|
+
public static String[][] createCalendar
|
|
11
|
+
|
|
12
|
+
最初のループは
|
|
13
|
+
for (int i = month; i < 12; i++) {
|
|
14
|
+
int firstDate = checkFirstDate(year, month);
|
|
15
|
+
// 配列を保存するようにする
|
|
16
|
+
calArray[month] = createCalendar(days[month], year, month, firstDate);
|
|
17
|
+
month++;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
// ここのループの処理を変えれば、もとの1ヶ月単位で表示へ戻すのも簡単だし、
|
|
21
|
+
// 配列渡して表示するメソッドを切り出しておくと、実行時の引数で表示を切り替えられます
|
|
22
|
+
month = 0
|
|
23
|
+
for (int i = month; i < 12; i+=3) {
|
|
24
|
+
// calArray[month] calArray[month+1] calArray[month+2] の第一週を表示
|
|
25
|
+
// calArray[month] calArray[month+1] calArray[month+2] の第二週を表示
|
|
26
|
+
// ・・・のようなことをループで表示
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
```
|
|
30
|
+
|