num1 = randomNum.nextInt(20);
num2 = randomNum.nextInt(num1);
Run Code Online (Sandbox Code Playgroud)
当我运行它时,我得到
"线程中的异常"main"java.lang.illigalArgumentException:bound必须
在EquationMin.main的
java.util.Random.nextInt(Uknown Source)
中存在(EquationMin.java:19)
从理论上讲/从语法-POV:是的
但是有一个问题:
[Random#nextInt(int)]返回从此随机数生成器的序列中提取的伪随机,均匀分布的int值,介于0(包括)和指定值(不包括)之间.
来自文档.这意味着num1实际上可能会变成0但是
[Random#nextInt(int)]抛出:IllegalArgumentException - 如果n不是正数
由于每个定义0不是正数,这将导致a IllegalArgumentException.
最简单的解决方法是简单地在参数中添加1:
num1 = randomNum.nextInt(20);
num2 = randomNum.nextInt(num1 + 1);
Run Code Online (Sandbox Code Playgroud)
确保第二次调用的参数nextInt永远不会变为0.而是可以定义下限,如Math.max(num1, 1)或其他任何东西.
| 归档时间: |
|
| 查看次数: |
63 次 |
| 最近记录: |