Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用类随机化掷骰子_Java - Fatal编程技术网

Java 使用类随机化掷骰子

Java 使用类随机化掷骰子,java,Java,我正在编写一个骰子游戏程序,为用户和计算机创建一个骰子,然后询问用户名、骰子上的边数,以及用户希望在计算机上玩多少次迭代。然后在每次掷骰后让程序检查哪个掷骰更高,在迭代结束时,它会写回每个用户和计算机的总赢款以及谁是赢家。我遇到的问题是,我需要创建一个roll类来随机化骰子,并将其设置为用户roll和计算机roll的值,我得到了这个错误 Exception in thread "main" java.lang.IllegalArgumentException: bound must be pos

我正在编写一个骰子游戏程序,为用户和计算机创建一个骰子,然后询问用户名、骰子上的边数,以及用户希望在计算机上玩多少次迭代。然后在每次掷骰后让程序检查哪个掷骰更高,在迭代结束时,它会写回每个用户和计算机的总赢款以及谁是赢家。我遇到的问题是,我需要创建一个roll类来随机化骰子,并将其设置为用户roll和计算机roll的值,我得到了这个错误

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");