Java算术异常,如何解决?

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

几分钟前,我开始用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 = 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;
}