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

このなステートメント法的です構文POVから理論的にはソース)
EquationMin.mainで (EquationMin.java:19)は、私はこれを実行すると、私は、メインの 『java.lang.illigalArgumentException <br> 「スレッドの例外』を取得するJava

+0

この場合、num1は0です。 – AhmadWabbi

+0

@ A.Wabbiどうすればこの問題を解決できますか? – Eddie

+0

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

答えて

5

/:はい

しかし、問題があります:

[random#nextInt(int)]この乱数ジェネレータのシーケンスから引き出された、0以上(指定しない)の間で均等に分布する擬似乱数int値を返します。

docsより。 - 定義あたりの0が正ではないので、nが

正でない場合、 、IllegalArgumentExceptionを:これはnum1が実際に例外0しかし

[ランダム#nextInt(int型)]になるかもしれない意味しますこれによりIllegalArgumentExceptionが発生します。

最も簡単な回避策は、単にパラメータに1を追加することです:

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

nextIntの2回目の呼び出しのためのパラメータが1のように、下限定義することができ代わりに0を向けることはありませんことを、保証するために、 Math.max(num1, 1)またはその他のもの。

+0

うまく言えば、+1 – Arman

関連する問題