片刻之前我在java中启动了我的代码,直到遇到问题...在控制台中出现/写了这个:
线程“Thread-2”中的异常java.lang.ArithmeticException:/ by zero。
at MyPackage.MyClass.draw(MyClass.java:180) ...
我去了错误所在的班级,这是代码:
if (map [row] [col] == 0) continue;
int rc = map [row] [col];
int r = rc / numTilesAcross;
int c = rc% numTilesAcross;
...
col和row的值为0 ...我不明白问题出在哪里...有人会帮我吗?
非常感谢。
答案 0 :(得分:1)
在程序中唯一可能出现零除的地方是:
int r = rc / numTilesAcross;
这意味着,您试图将rc
除以0 - numTilesAcross
变量保持为零。如果你想让它工作,你需要确保numTilesAcross
在执行时永远不会为零,例如,使用if条件:
if numTilesAcross == 0 {
// do something else
} else {
int r = rc / numTilesAcross;
}
答案 1 :(得分:0)
异常非常清楚:你除以零。 由于您的代码中只有一个部门
int r = rc / numTilesAcross;
如果numTilesAcross正好为0,则会在此行中抛出异常。
我建议你找出它为零的原因并且不处理这种情况,例如:只需在之前添加支票:
if(numTilesAcross != 0){
int r = rc / numTilesAcross;
}
答案 2 :(得分:0)
嗯,你显然除以零。您提供的代码中唯一可能出现的位置是numTilesAcross
。如果此代码的计算结果为0
,请添加一项检查以阻止此代码运行。
if (map [row] [col] == 0) continue;
int rc = map [row] [col];
int r, c;
if(numTilesAcross != 0) {
r = rc / numTilesAcross;
c = rc % numTilesAcross;
} else {
//do something when numTilesAcross = 0
}