2 回答

TA貢獻(xiàn)1810條經(jīng)驗 獲得超5個贊
以下是您的代碼的問題:
您永遠(yuǎn)不會返回該roll(...)方法生成的隨機值
public int roll(int rand){
rand = r.nextInt(value);
return value;
}
將其更改為
public int roll(int rand) {
return r.nextInt(rand);
}
在 for 循環(huán)中,您只需調(diào)用該roll() 方法即可。由于它已經(jīng)計算出骰子的隨機值,因此您無需r.nextInt()再次調(diào)用。
value = r.nextInt(user.roll(sides)) + 1;
value2 = r.nextInt(comp.roll(sides)) + 1;
將其更改為
value = user.roll(sides) + 1;
value2 = comp.roll(sides) + 1;
現(xiàn)在使用打印出值:
System.out.printf("%s rolled: %d\n", user.getOwner(), value);
System.out.print("Computer rolled: " + value2 + "\n\n");
執(zhí)行上述步驟后,您的代碼將按預(yù)期工作。另外作為旁注,不要使用含義不明確的變量名,如value、value2等。

TA貢獻(xiàn)1846條經(jīng)驗 獲得超7個贊
每當(dāng)您制作一個新骰子時,您的骰子value
永遠(yuǎn)不會從零更改,從而導(dǎo)致該錯誤彈出,因為根據(jù)您的 Die 類,每當(dāng)您調(diào)用 roll() 時它將查看的范圍是 0 到 0。更改value
為用戶投入的價值并制造新的模具。
添加回答
舉報