2016-03-29 35 views
0

Bir java acemi ve garip durum atar rastgele meblağlar üretmek için kodumu ...Neden java.lang.ArithmeticException alıyorum:/sıfır?

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

} Ekranımın bugün ancak çok fazla bakan oldum çünkü

Belki oluyor duyuyorum Neden bu hatayı alıyorum bilmiyorum.

Şimdiden teşekkürler!

+1

Hata iletisi, sıfıra böldüğünüzü söylüyor. – Kon

+4

Bunu tahmin edeceğim: 'n' 1, 2 ya da 3 değil. –

+0

Bu kod çalıştırılmadan önce' max' nedir? –

cevap

3

Yalnızca bu yüzden getal2 == Math.sqrt(0) == 0, daha önce başka bir değere this.max == 0 belirlemiyorsunuz ettiyseniz n 1, 2 veya 3'tür this.max eğer ayarlayın.

n'un diğer tüm değerlerini işlemek için switch bildiriminize default durum belgesini eklemelisiniz. IllegalArgumentException'u atmak uygun olabilir.

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

ya sen this.max ayarlayabilirsiniz için mantıklı bir varsayılan değere sahip olabilir.