2 回答
TA贡献1810条经验 获得超5个赞
以下是您的代码的问题:
您永远不会返回该roll(...)方法生成的随机值
public int roll(int rand){
rand = r.nextInt(value);
return value;
}
将其更改为
public int roll(int rand) {
return r.nextInt(rand);
}
在 for 循环中,您只需调用该roll() 方法即可。由于它已经计算出骰子的随机值,因此您无需r.nextInt()再次调用。
value = r.nextInt(user.roll(sides)) + 1;
value2 = r.nextInt(comp.roll(sides)) + 1;
将其更改为
value = user.roll(sides) + 1;
value2 = comp.roll(sides) + 1;
现在使用打印出值:
System.out.printf("%s rolled: %d\n", user.getOwner(), value);
System.out.print("Computer rolled: " + value2 + "\n\n");
执行上述步骤后,您的代码将按预期工作。另外作为旁注,不要使用含义不明确的变量名,如value、value2等。
TA贡献1846条经验 获得超7个赞
每当您制作一个新骰子时,您的骰子value
永远不会从零更改,从而导致该错误弹出,因为根据您的 Die 类,每当您调用 roll() 时它将查看的范围是 0 到 0。更改value
为用户投入的价值并制造新的模具。
添加回答
举报