0

これらのアルゴリズムを取得して、1 ~ 6 の範囲でランダムに選択された 5 つの整数で満たされた配列を評価しようとしています。残念ながら、ハイ カードと 1 ペアのオプションのみが返されます。ツー ペアやスリー オブ ア カインドなどをロールしたときに、より高いスコアにアクセスするにはどうすればよいですか?

private static int[] getCounts(int[] dice) {

    int[] counts = new int[6];
    String resValue = "";
    for (int i = 0; i < dice.length; i++) {
        if (dice[i] == 1) {
            counts[0]++;
        } else if (dice[i] == 2) {
            counts[1]++;
        } else if (dice[i] == 3) {
            counts[2]++;
        } else if (dice[i] == 4) {
            counts[3]++;
        } else if (dice[i] == 5) {
            counts[4]++;
        } else if (dice[i] == 6) {
            counts[5]++;
        }
    }
    return counts;
}

private static String getResult(int[] dice) {
    int[] counts = getCounts(dice);
    String resValue = " ";

    for (int i = 0; i < counts.length; i++) {
        if (counts[i] == 5) {
            resValue = "Five of a kind ";
        } else if (counts[i] == 4) {
            resValue = "Four of a kind ";
        } else if (counts[i] == 3) {
            for (int j = 0; j < counts.length; j++) {
                if (counts[j] == 2) {
                    resValue = "Full House ";
                }
            }
            resValue = "Three of a Kind ";
        } else if (counts[i] == 2) {
            for (int j = 0; j < counts.length; j++) {
                if (counts[j] == 2) {
                    resValue = "Two Pairs ";
                }
            }
            resValue = "One Pair ";
        } else {
            resValue = "Highest Card ";
        }
    }
    return resValue;
}
4

1 に答える 1

0

あなたの if else は広い範囲でなければなりません。前により高い resValue が見つかった場合でも、最後の else が実行されます。チェックを追加して、新しい resValue がより高いかどうかを確認するか、各句の最後にブレークを追加します。

編集:ここで、それは私のために働いた:

private static int[] getCounts(int[] dice) {
        int[] counts = new int[6];
        String resValue = "";
        for (int i = 0; i < dice.length; i++) {
            if (dice[i] == 1) {
                counts[0]++;
            } else if (dice[i] == 2) {
                counts[1]++;
            } else if (dice[i] == 3) {
                counts[2]++;
            } else if (dice[i] == 4) {
                counts[3]++;
            } else if (dice[i] == 5) {
                counts[4]++;
            } else if (dice[i] == 6) {
                counts[5]++;
            }
        }
        return counts;
    }

    private static String getResult(int[] dice) {
        int[] counts = getCounts(dice);
        String resValue = " ";

        for (int i = 0; i < counts.length; i++) {
            if (counts[i] == 5) {
                resValue = "Five of a kind ";
                break;
            } else if (counts[i] == 4) {
                resValue = "Four of a kind "; break;
            } else if (counts[i] == 3) {
                resValue = "Three of a Kind ";
                for (int j = 0; j < counts.length; j++) {
                    if (counts[j]==2) {
                        resValue = "Full House "; break;
                    }
                }
                break;
            } else if (counts[i] == 2) {
                 resValue = "One Pair ";
                for (int j = 0; j < counts.length; j++) {
                    if (counts[j] == 2) {
                        resValue = "Two Pairs "; break;
                    }
                }
               break;
            } else {
                resValue = "Highest Card ";
            }
        }
        return resValue;
    }
于 2013-03-25T05:51:23.430 に答える