2016-05-23 58 views
0
num1 = randomNum.nextInt(20); 
num2 = randomNum.nextInt(num1); 

當我跑,我得到主‘java.lang.illigalArgumentException
「在線程異常’:綁定必須獨到之處
在java.util.Random.nextInt(發生不明源)
在EquationMin.main(EquationMin.java:19)這是statment在Java中的法律

+0

num1在這種情況下爲零 – AhmadWabbi

+0

@ A.Wabbi那麼,我該如何解決這個問題? – Eddie

+0

'num2 = randomNum.nextInt(num1 + 1);' – AhmadWabbi

回答

5

理論上/從語法POV:是

但是有一個問題:

[Random#nextInt(int)]返回一個僞隨機數,它是從該隨機數生成器的序列中抽取的介於0(含)和指定值(不含)之間的均勻分佈的int值。

來自docs。這意味着num1實際上可能變成是0。但

[隨機#nextInt(INT)]拋出: - 如果n不是正

由於0每定義不爲正,這將導致IllegalArgumentException

最簡單的解決方法是隻需添加1〜參數:

num1 = randomNum.nextInt(20); 
num2 = randomNum.nextInt(num1 + 1); 

保證,對於的nextInt第二次調用的參數將永遠不會變成0而不是一個可以定義一個下界,像Math.max(num1, 1)或其他東西。

+0

恰好說明,+1 – Arman