回答編集履歴

3

インデント修正

2017/07/31 02:01

投稿

momon-ga
momon-ga

スコア4820

test CHANGED
@@ -56,23 +56,23 @@
56
56
 
57
57
  for(int j = 0; j < 6; j++) {
58
58
 
59
- for(int x = 0; x < 3; x++) {
59
+ for(int x = 0; x < 3; x++) {
60
60
 
61
- for(int k = 0; k < 7; k++) {
61
+ for(int k = 0; k < 7; k++) {
62
62
 
63
- System.out.print(
63
+ System.out.print(
64
64
 
65
- calArray[i+x][j][k] == null ? " " : calArray[i+x][j][k]
65
+ calArray[i+x][j][k] == null ? " " : calArray[i+x][j][k]
66
66
 
67
- );
67
+ );
68
68
 
69
- }
69
+ }
70
70
 
71
- System.out.print(" ");
71
+ System.out.print(" ");
72
72
 
73
- }
73
+ }
74
74
 
75
- System.out.println();
75
+ System.out.println();
76
76
 
77
77
  }
78
78
 

2

雑実装を追加

2017/07/31 02:01

投稿

momon-ga
momon-ga

スコア4820

test CHANGED
@@ -21,6 +21,8 @@
21
21
 
22
22
 
23
23
  最初のループは
24
+
25
+ String[][][] calArray = new String[12][][];
24
26
 
25
27
  for (int i = month; i < 12; i++) {
26
28
 
@@ -50,6 +52,30 @@
50
52
 
51
53
  // ・・・のようなことをループで表示
52
54
 
55
+ System.out.println(" 日 月 火 水 木 金 土 日 月 火 水 木 金 土 日 月 火 水 木 金 土");
56
+
57
+ for(int j = 0; j < 6; j++) {
58
+
59
+ for(int x = 0; x < 3; x++) {
60
+
61
+ for(int k = 0; k < 7; k++) {
62
+
63
+ System.out.print(
64
+
65
+ calArray[i+x][j][k] == null ? " " : calArray[i+x][j][k]
66
+
67
+ );
68
+
69
+ }
70
+
71
+ System.out.print(" ");
72
+
73
+ }
74
+
75
+ System.out.println();
76
+
77
+ }
78
+
53
79
  }
54
80
 
55
81
 

1

追記

2017/07/31 01:58

投稿

momon-ga
momon-ga

スコア4820

test CHANGED
@@ -5,3 +5,57 @@
5
5
  簡単に修正するとしたら、`System.out` してる部分を配列に保存するようにします。
6
6
 
7
7
  で、1年分のカレンダーができあがったら、まとめて3か月分を表示するようにします。
8
+
9
+
10
+
11
+ データの作成の部分を表示のロジックを分けておくと後々の修正が楽になります。
12
+
13
+ ```
14
+
15
+ public static void createCalendar
16
+
17
+ ↓ 以下のような実装にする
18
+
19
+ public static String[][] createCalendar
20
+
21
+
22
+
23
+ 最初のループは
24
+
25
+ for (int i = month; i < 12; i++) {
26
+
27
+ int firstDate = checkFirstDate(year, month);
28
+
29
+ // 配列を保存するようにする
30
+
31
+ calArray[month] = createCalendar(days[month], year, month, firstDate);
32
+
33
+ month++;
34
+
35
+ }
36
+
37
+ }
38
+
39
+ // ここのループの処理を変えれば、もとの1ヶ月単位で表示へ戻すのも簡単だし、
40
+
41
+ // 配列渡して表示するメソッドを切り出しておくと、実行時の引数で表示を切り替えられます
42
+
43
+ month = 0
44
+
45
+ for (int i = month; i < 12; i+=3) {
46
+
47
+ // calArray[month] calArray[month+1] calArray[month+2] の第一週を表示
48
+
49
+ // calArray[month] calArray[month+1] calArray[month+2] の第二週を表示
50
+
51
+ // ・・・のようなことをループで表示
52
+
53
+ }
54
+
55
+
56
+
57
+ ```
58
+
59
+
60
+
61
+