0

私はJavaの初心者で、ランダムな合計を生成するコードが奇妙な例外をスローします...

    public void randomRekensom(int n)
{

    switch(n) {
        case 1: this.max = 100;
                break;
        case 2: this.max = 150;
                break;
        case 3: this.max = 200;
                break;
}
    getal1= (int) Math.sqrt(max);
    getal2= (int) Math.sqrt(max);

    operator=ThreadLocalRandom.current().nextInt(1, 4 + 1);
    switch(operator) {
        case 1: antwoord=(this.getal1+this.getal2);
                operatorTeken=" + ";
                break;
        case 2: antwoord=(this.getal1-this.getal2);
                operatorTeken=" - ";
                break;
        case 3: antwoord=(this.getal1/this.getal2);
                operatorTeken=" / ";
                break;
        case 4: antwoord=(this.getal1*this.getal2);
                operatorTeken=" * ";
                break;
}

}

今日は画面を見つめすぎたせいかもしれませんが、なぜこのエラーが発生するのかわかりません。

前もって感謝します!

4

1 に答える 1

3

が 1、2、または 3 の場合にのみ設定します。以前に他の値に設定していないthis.max場合は、.nthis.max == 0getal2 == Math.sqrt(0) == 0

の他のすべての値を処理するには、文にdefaultケースを追加する必要があります。単に . を投げるのが適切かもしれません。switchnIllegalArgumentException

switch(n) {
    case 1: this.max = 100;
            break;
    case 2: this.max = 150;
            break;
    case 3: this.max = 200;
            break;
    default: throw new IllegalArgumentException("Not 1, 2 or 3");
}

または、設定できる適切なデフォルト値がある場合がありますthis.max

于 2016-03-29T22:08:45.563 に答える