1

これを実行しようとするたびに、アプリケーションに FC が表示されます

int a, b;
Random s = new Random();
    if (diffi.contains("easy") && name.contains("sub")) {
        a = s.nextInt(21);
        b = s.nextInt(a);
    }

しかし、「a」を削除してその場所に数字を入れると、機能し始めます

int a, b;
Random s = new Random();
    if (diffi.contains("easy") && name.contains("sub")) {
        a = s.nextInt(21);
        b = s.nextInt(21);
    }

2 番目の数値「b」は常に a より小さくしたい

4

1 に答える 1

5

への最初の呼び出しnextIntが 0 を返す場合、例外が発生します。その後、2 番目の呼び出しは0 以上で 0 未満の値を返すことができないため、例外が発生します。

のドキュメントからRandom.nextInt

スロー: IllegalArgumentException -nが正でない場合

ただし、少し前に戻って、診断アプローチで実際にこれらの例外の詳細が表示されなかった理由を解明する必要があります。アプリケーションログを確認しましたか? 例外が明確で、適切な例外があれば、何が問題なのかがかなり明白になると思います。

編集:そのコードが実行されるたびに実際に例外をスローしているとは思えません。代わりに、そのコードが何度も実行されているa(最終的には 0 であり、例外がスローされることがわかります) 運が悪かっただけだと思います。

于 2013-06-16T11:20:51.307 に答える