Java 使用类随机化掷骰子
我正在编写一个骰子游戏程序,为用户和计算机创建一个骰子,然后询问用户名、骰子上的边数,以及用户希望在计算机上玩多少次迭代。然后在每次掷骰后让程序检查哪个掷骰更高,在迭代结束时,它会写回每个用户和计算机的总赢款以及谁是赢家。我遇到的问题是,我需要创建一个roll类来随机化骰子,并将其设置为用户roll和计算机roll的值,我得到了这个错误Java 使用类随机化掷骰子,java,Java,我正在编写一个骰子游戏程序,为用户和计算机创建一个骰子,然后询问用户名、骰子上的边数,以及用户希望在计算机上玩多少次迭代。然后在每次掷骰后让程序检查哪个掷骰更高,在迭代结束时,它会写回每个用户和计算机的总赢款以及谁是赢家。我遇到的问题是,我需要创建一个roll类来随机化骰子,并将其设置为用户roll和计算机roll的值,我得到了这个错误 Exception in thread "main" java.lang.IllegalArgumentException: bound must be pos
Exception in thread "main" java.lang.IllegalArgumentException: bound must be positive
at java.util.Random.nextInt(Random.java:388)
at classwork6_3.Die.roll(Die.java:52)
at classwork6_3.ClassWork6_3.main(ClassWork6_3.java:29)
这是我的主要课程
每当您制作一个新的模具时,您的值永远不会从零变为零,这会导致错误弹出,因为根据您的模具类别,每当您调用roll时,它将查看的范围是0到0。将值更改为用户输入的值,然后制作一个新模具。以下是代码的问题: 您永远不会返回滚动生成的随机值。。。方法 换成
public int roll(int rand) {
return r.nextInt(rand);
}
value = user.roll(sides) + 1;
value2 = comp.roll(sides) + 1;
在for循环中,您只需点名即可
方法因为它已经计算了模具的随机值,所以您无需再次调用r.nextInt
换成
public int roll(int rand) {
return r.nextInt(rand);
}
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等。是否输入负数?这对我来说没有意义。为什么您需要一个参数来滚动,当边数应该提示时,它不是用于comp的,已经存储在类中了?你为什么打电话给有价值的nextInt?你不应该选择一个以边数为界的随机数吗?你为什么不返回掷骰子时生成的随机数?@NicholasK,我没有输入任何数字,程序应该根据我告诉它骰子的边数随机生成一个数字。@Matt,这个作业的说明要我在骰子类中创建一个名为roll的类。我只是想输入任何能让代码正常运行的东西,这就是我遇到的问题。这应该能解决错误,但是我不相信程序能正常运行。看看roll,你可以看到生成的随机值从来没有被实际使用过。是的,这让我很困惑。当我查看代码时,我猜这是一个输入错误,因为每当他调用roll时,从未使用过该参数
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");