基本随机滚动骰子Java
我正在尝试编写一个方法rollDice(int number,int nSides),它返回使用nSides边滚动数字骰子的总结果
例如,rollDice(3,6)应该返回滚动3个六边形骰子的结果(加上3到18之间的数字)
当我为int number
键入1时,Below方法返回负数。我需要做什么来解决这个问题
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;
}
# 1 楼答案
你只需要分别初始化
Random r
和int roll
一次,这样我就把它们从循环中删除了。nextInt(int)方法从0中选择一个整数,包括0到,但不包括int。这被称为0(包含)到int(排除),因此必须添加1来调整模具的范围。你似乎已经知道了,虽然我不知道你为什么用%。用*来乘法,所有的骰子的数字都是一样的,我不相信你的意思。下面是类的一个可能实现:# 2 楼答案
Random.nextInt()
具有不可预测的行为——它可以生成整数的所有可能值,包括负数。改为使用Random.nextInt(numSides)
——它将从[0,numSides]返回一个整数,即包括0,不包括numSides。要获得所需的功能[1,numSides],请使用有关更多信息,请参见here