質問: matches; } /** * 勝ったことを知らされるメソッド */ public void youWon() { wins++; } /** * 負けたことを知らされるメソッド */ public void youLost() { losts++; } /** match回目の勝負のnum回目のプレイヤの手を出す * 抽象メソッドなので,サブクラスでオーバーライドする */ public abstract Hand showHand(int match, int num); } ```
回答: 特定個数のパターン配列を繰り返し表示するには剰余算(余り計算)の利用が一般的な解法です。 第三者にも役立ちそうな規則性のあるパターンとして、曜日の連続表示を例に出します。 曜日の連続表示をするには、"月","火",..."日" という7個の配列を持ち、"日"の次にまた"月"を表示します。 これはパー、グー、チョキのパターンを7個の配列に拡大しただけなので、仕組みが分かればじゃんけんゲームにも応用可能です。 下記のサンプルコードでは`i`が100回増分するfor文で `i % 7` によって剰余として0から6の数値をループしながら取得できます。 これで"月","火",...と配列を表示して"日"の次にまた"月"を表示する規則的な繰り返し処理を実現しています。 `0 % 7 == 0` `1 % 7 == 1` `2 % 7 == 2` ... `7 % 7 == 0` `8 % 7 == 1` `9 % 7 == 2` **サンプルコード** ``` public class Test { public static void main(String[] args) { String dayOfWeeks = "月火水木金土日"; for(int i = 0; i < 100; i++) { // 0から6を連続して求める 0,1,2,3,4,5,6,0,1,2... int joyo = i % 7; // dayOfWeeksのchar配列パターンを表示する System.out.println(dayOfWeeks.charAt(joyo)); } } } ``` ご質問のコードも「手がランダムに出される」部分を剰余のコードに置き換えることで解決できます。 サンプルコードでは`CharSequence#charAt`を使って1文字ずつ配列化していますが、じゃんけんゲームに転用する場合は配列でもswitch文でもお好みの方法で実装してください。