2012-12-03 87 views
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]在新阵列中划分2个阵列的错误

但是当我尝试运行这段代码,它说错误: “/零”

请帮助我。

回答

1

您的数组是整数并且将整数除以零是未定义的。在分割元素之前,您需要检查数组元素是否为非零值,并在分母为零的情况下决定结果应采用的值。另请注意,您的输出数组是double数组,但是由于参数为int,您的数据将失去精度数组和整数除法与浮点除法的工作方式非常不同 - 整数除以整数的结果是另一个整数,而不是双倍。为了得到你想要的行为,你应该把分子或分母作为双精度,而不是的结果,因为这只是在之后发生整数除法后发生整数结果。如果你是编程新手,谷歌整数除法或搜索一些与整数除法有关的stackoverflow问题。

编辑:在您的评论来看,这条线

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

应该

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

(或者你可以铸造分母增加一倍,而不是 - 甚至两者),以避免错误使用整数除法。你的错误是告诉你,你除以零,这表明rij2[i]为零为i的某个值。您需要在代码中检测到这一点。如果你确定所有的元素都严格大于零,那么我建议你在别的地方可能有其他的代码覆盖这些值。无论哪种方式,您都可以使用调试器或添加一些错误捕获代码来完成确定。如果您实际上被零除,我不能“编辑”您的代码,以避免零除以!

+0

数组元素是非零的,我不得不给一些数组添加到数组中。所有这些数字都是严格肯定的。 输出类型'double'必须保留,这在我练习打印的课程单上提到。 你能提供一些代码来解释你的意思吗?只需编辑我的代码请 – STheFox

+0

谢谢,会试试这个。 – STheFox