1
public double[] deel(int[] rij1, int[] rij2)
    {
        final int RIJ_LENGTH = 5;
        double rij[] = new double [RIJ_LENGTH];

        for (int i = 0; i < rij.length; i++)
            rij[i] = (double) (rij1[i]/rij2[i]);



return rij;
}

这是一种创建名为“rij”的新数组的方法。这个新数组具有元素 (rij1 / rij2)。所以 rij[0] = rij1[0]/rij2[0]

但是当我尝试运行此代码时,它显示错误:“/ by zero”

请帮我。

4

1 回答 1

1

您的数组是整数,整数除以零是未定义的。您需要在除以元素之前检查数组元素是否非零,并决定在分母为零的情况下您的结果应该采用什么值。另请注意,您的输出数组是一个double数组,但您的数据会丢失精度,因为参数是int数组,整数除法与浮点除法的工作方式非常不同 - 整数除以整数的结果是另一个整数,而不是双精度. 要获得您想要的行为,您应该将分子或分母转换为双精度数,而不是结果,因为这只是在整数除法发生后转换整数结果。如果您是编程新手,请 google整数除法或搜索一些处理整数除法的stackoverflow问题。

编辑:根据您的评论,这一行

rij[i] = (double) (rij1[i]/rij2[i]);

应该

rij[i] = ((double)rij1[i]) / rij2[i];   

(或者您可以将分母转换为双精度 - 甚至两者兼而有之)以防止整数除法错误。您的错误是告诉您您正在除以零,这表明rij2[i]对于i. 您需要在代码中检测到这一点。如果您确定所有元素都严格大于零,那么我建议您可能在其他一些代码覆盖这些值的其他地方遇到错误。无论哪种方式,您都可以逐步调试调试器或添加一些错误捕获代码以绝对确定。如果您实际上是除以零,我不能“只编辑”您的代码以避免除以零!

于 2012-12-03T20:31:16.287 回答