我想在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());
}
}
答案 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。