2012-12-03 82 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