Java算术异常,如何解决?
几分钟前,我开始用java编写代码,直到遇到问题。。。控制台中存在/写入以下内容: 线程thread-2 java.lang.arithmetricException中的异常:/by零 在MyPackage.MyClass.draw MyClass.java:180 我去了错误来源的班级,代码如下:Java算术异常,如何解决?,java,exception,Java,Exception,几分钟前,我开始用java编写代码,直到遇到问题。。。控制台中存在/写入以下内容: 线程thread-2 java.lang.arithmetricException中的异常:/by零 在MyPackage.MyClass.draw MyClass.java:180 我去了错误来源的班级,代码如下: if (map [row] [col] == 0) continue; int rc = map [row] [col]; int r = rc / numTilesAcross; int c
if (map [row] [col] == 0) continue;
int rc = map [row] [col];
int r = rc / numTilesAcross;
int c = rc% numTilesAcross;
列和行的值为0。。。我不明白问题出在哪里。。。有人会帮我吗
非常感谢。例外情况非常清楚:你被零除了。 因为代码中只有一个除法
int r = rc / numTilesAcross;
如果numTilesAcross正好为0,则将在此行引发异常
我建议您找出其为零的原因,不要处理此案例,例如,只需在以下情况之前添加一个检查:
if(numTilesAcross != 0){
int r = rc / numTilesAcross;
}
很明显,你在除以零。您提供的代码中唯一可能出现这种情况的地方是numTilesAcross。如果计算结果为0,请添加检查以防止此代码运行
程序中唯一可能出现零除的地方是:
int r = rc / numTilesAcross;
这意味着,您正试图将rc除以0-numTilesAcross变量的值为零。如果您想让它工作,您需要确保在执行时numTilesAcross永远不会为零,例如,使用If条件:
if numTilesAcross == 0 {
// do something else
} else {
int r = rc / numTilesAcross;
}
您需要验证numTilesAcross从不为零。因为这是唯一一个被你共享的变量除的地方,而且你没有告诉我们numTilesAcross是如何定义的,所以我们无法提供更多的帮助。numTilesAcross的价值是什么?@LyjuIEdwinson 0。它似乎工作得很好!!非常感谢您的帮助:我尝试了您的代码,似乎效果很好,我会在需要时保留代码,谢谢:非常感谢,我会记住代码的这一部分,以防我出于特定目的需要它:P
if numTilesAcross == 0 {
// do something else
} else {
int r = rc / numTilesAcross;
}