num1 = randomNum.nextInt(20);
num2 = randomNum.nextInt(num1);
当我跑这个时,我得到了
"线程中的异常" main" java.lang.illigalArgumentException:bound必须是正确的
在java.util.Random.nextInt(Uknown Source)
在EquationMin.main(EquationMin.java:19)
答案 0 :(得分:5)
理论上/从语法-POV:是
但问题是:
[Random#nextInt(int)]返回从该随机数生成器序列中提取的伪随机,均匀分布的int值,介于0(包括)和指定值(不包括)之间。
来自docs。这意味着num1
实际上可能会变为0.但是
[Random#nextInt(int)]抛出: IllegalArgumentException - 如果n不是正数
由于每个定义0不为正,因此会产生IllegalArgumentException
。
最简单的解决方法是简单地在参数中添加1:
num1 = randomNum.nextInt(20);
num2 = randomNum.nextInt(num1 + 1);
确保nextInt
的第二次调用的参数永远不会变为0.而是可以定义下限,例如Math.max(num1, 1)
或其他任何内容。