2016-03-29 13 views
0

私はランダム合計を生成するためのJavaで初心者と私のコードは...なぜ私はj​​ava.lang.ArithmeticExceptionを取得していますか:/ゼロによって?

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; 
} 

}

奇妙な例外をスローし、私は今日、私の画面であまりを見つめてきたので、多分それはだだけどなぜこのエラーが出るのか分かりません。

ありがとうございます!あなたは、以前に他のいくつかの値に設定しthis.max == 0、そうgetal2 == Math.sqrt(0) == 0ていませんでした場合はn場合にのみthis.maxを設定

+1

ゼロで割っているというエラーメッセージが表示されます。 – Kon

+4

「n」は1でも2でも3でもないと推測します。 –

+0

このコードを実行する前に「最大」とは何ですか? –

答えて

3

は1、2または3です。

他のすべての値nを処理するには、switchステートメントにdefaultケースを追加する必要があります。単にIllegalArgumentExceptionを投げることが適切かもしれません。

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を設定することができますするために賢明なデフォルト値を有することができます。

関連する問題