我正在尝试编写一个方法 rollDice(int number, int nSides),该方法返回掷有 nSides 面的数字骰子的总结果。
因此,例如 rollDice(3, 6) 应该返回滚动 3 个六面骰子的结果(添加到 3 到 18 之间的数字)。
当我为 int number
键入 1 时,下面的方法返回负数 我需要做什么来解决这个问题?
public static int rollDice(int number, int nSides) {
int num = 0;
if(nSides >=3)
{
for(int i = 0; i < number; i++){
Random r = new Random();
int roll = r.nextInt();
num = num + (roll % nSides)+1;
}
}
else{
System.out.println("Error num needs to be from 3");
}
return num;
}
最佳答案
Random.nextInt()
具有不可预测的行为 - 它可以生成整数的所有可能值,包括负数。请改用 Random.nextInt(numSides)
- 它将从 [0,numSides) 返回一个整数,即包括 0 并排除 numSides。要获得所需的功能 [1,numSides],请使用
r.nextInt(numSides)+1;
参见 here获取更多信息。
关于java - 基本的随机掷骰子 Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12860398/