質問: 1; z <= 24; z++) { strbufr.append(z); strbufr.append("("); switch(i % 12) { case 0: strbufr.append(eto[0]); break; case 1: strbufr.append(eto[1]); break; case 2: strbufr.append(eto[2]); break; ・ ・ (中略) case 23: strbufr.append(eto[23]); break; } strbufr.append(")"); } System.out.println(strbufr); } ``` 註:この質問は「繰り返し処理で配列のインデックスと要素を連結したい」の続きです。
回答: 単純な2重ループにすることで解決できます。 こういったプログラムを組む場合、数字の法則性をいかに見つけるかが鍵になります。 今回の場合だと、たとえば干支の周期ごとにそれぞれの干支の数字を見ていくと、 * 1周期目: 自身のインデックス番号(1~12) + 子 = 1, 丑 = 2, ... * 2周期目: 自身のインデックス番号(1~12) + 12 + 子 = 13, 丑 = 14, ... * 3周期目: 自身のインデックス番号(1~12) + 24 + 子 = 25, 丑 = 26, ... * ... という風に表すことが出来ます。 つまり、n周期目には 「自身のインデックス番号 * (n - 1)」 の数字が当てはまることになります。 各周期ごとに、各干支の文字を出力する、というプログラムは、以下のようになりますね。 ``` String[] eto = {/* 干支の文字が入っている */}; for (int i = 1; i <= 2; i++) { for (int j = 1; j <= 12; j++) { int number = (i * 12 + (j - 1)); System.out.println(eto[j] + " " + number); } } ``` あとは自分で考えてみてください。