这个陈述在Java中是否合法

Edd*_*die 0 java

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)

Pau*_*aul 5

从理论上讲/从语法-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)或其他任何东西.