java中的扑克骰子 - 没有正确给出分数

时间:2015-02-25 14:13:21

标签: java dice poker

我想在java中创建一个扑克骰子游戏,当玩家掷骰子时,我希望程序告诉结果和当前分数。然而,出了点问题。它没有给我正确的分数。例如,我改变了数学随机算​​法总是给我总是(1,1,1,1,1),所以结果将是50.不幸的是,它给了我0.我可以请一些帮助吗?感谢。

这是我的代码:

public class DiceGame {

    public static int [] rollDice() {
        int [] diceSide = new int[5];
        Random diceRoller = new Random();
         for (int i = 0; i<diceSide.length; i++) {
            int roll = diceRoller.nextInt(1) + 1;
            diceSide[i] = roll;
    }
         System.out.print(diceSide[0] + "" + diceSide[1] + "" + diceSide[2] + "" + diceSide[3] + "" + diceSide[4]);
         return diceSide; 
    }

    public static int getResult(int[] dice) {

        int resValue = 0;

        for (int i = 0; i < dice.length; i++) {
            if (dice[i] == 5) {
                resValue = 50;

            } else if (dice[i] == 4) {
                resValue = 40;          

            } else if (dice[i] == 3) {
                resValue = 30;     

            }
        }
        System.out.print(resValue); 
        return resValue;
    }


    public static void main(String[] args) {

        int player1=0;
        int player2;
        int player3;
        int player4;
        int player5;

        player1 += getResult(rollDice());
    }
}

3 个答案:

答案 0 :(得分:0)

Math.Random返回介于0和1之间的值。 您必须将此值乘以您想要接收的最大值 - 1并为整个事物添加+1。不要忘记将这整个事件转换为(int)。 看起来应该是这样的:

(int) (Math.Random(5) + 1)

这样,你得到1到6之间的值。

答案 1 :(得分:0)

rollDice中,您从java.util.Random获取值。但是,the upper limit is excluded,所以你总是通过diceRoller.nextInt(1) + 1来结束。

整数数组适用于表示多个骰子,因此,如果这是你想要的,你可以使用diceRoller.nextInt(6) + 1来设置每个骰子的值。如果你想要一个骰子,你只需要一个整数变量。

答案 2 :(得分:0)

你正在做一些不同的事情。您正在创建从0到整数最大值的随机数。

diceRoller.nextInt(1)

这会创建一个从0到1的随机数。所以你很少得到5次1.如果你想嘲笑它,你应该把它作为作业

然后,因为这段代码:

    for (int i = 0; i < dice.length; i++) {
        if (dice[i] == 5) {
            resValue = 50;

        } else if (dice[i] == 4) {
            resValue = 40;          

        } else if (dice[i] == 3) {
            resValue = 30;     

        }
    }

表示如果最后一个dice[i]值为3,4或5,则会获得一个新值。我认为你要做的就是这个(将整个数组的骰子值增加十倍):

    int resValue = 0;

    for (int i = 0; i < dice.length; i++) {
        resValue += dice[i] * 10;
    }

在最后一种情况下,如果所有5个direRoll结果都是1,那么你将得到50。