[英]Why am I getting java.lang.ArithmeticException: divide by zero
[英]Why am I getting java.lang.ArithmeticException: / by zero?
我是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;
}
}
也许是因为今天我在屏幕上盯着太多了,但我不知道为什么会出现此错误。
提前致谢!
仅当n
为1、2或3时才设置this.max
。如果之前未将其设置为其他值,则this.max == 0
,因此getal2 == Math.sqrt(0) == 0
。
您应该在switch
语句中添加default
大小写,以处理n
所有其他值。 仅抛出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
设置为默认值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.