骰子扑克得分算法?

时间:2013-03-25 04:48:01

标签: java

尝试使用这些算法来评估一个填充有5个随机选择的整数的数组,范围从1-6。不幸的是,它只会返回高卡和一对选项。当我掷出两对,三种等等时,如何获得更高的分数?

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;
}

1 个答案:

答案 0 :(得分:0)

你的其他方法必须广泛。即使我们之前发现更高的resValue,最后的其他执行也会执行。添加检查,查看新的resValue是否更高,或者在每个子句的末尾添加break。

编辑:在这里,它对我有用:

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;
    }