Java算术异常,如何解决?

时间:2018-02-07 22:04:01

标签: java exception

片刻之前我在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 ...我不明白问题出在哪里...有人会帮我吗?

非常感谢。

3 个答案:

答案 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
}