2015-02-10 78 views
0

你好我學習Java和我試圖讓3個圖像是300×300,600×600和900x900像素,並通過分割它搶圖像轉換成3X3網格,然後在該圖像中混合每個3x3方塊,每次運行我的程序時生成隨機混合。我決定把所有的像素都放到一個數組中,然後在那個長度爲3的圖像中給我一個0的餘數。然後,我得到錯誤「java.lang.ArithmeticException:/ by zero」。請有人幫我解決我的問題。我得到「java.lang.ArithmeticException:/零」當我運行我的程序

public void randomPictureShift(Picture scrambledImage){ 
Pixel blankImage [] = this.getPixels(); 
Pixel originalImage [] = scrambledImage.getPixels(); 

//----------------------------------------------------------------------- 
Random r = new Random(); 
for (int i = originalImage.length; i > 0; i--) { 
    int index = r.nextInt(i); 
//----------------------------------------------------------------------- 
    if ((i)%(1/3) == 0){ 
    //swap 
    Pixel tmp = originalImage[index]; 
    originalImage[index] = originalImage[i]; 
    originalImage[i] = tmp; 
+2

'(ⅰ)%(1/3 )'與'(i)%(0)'相同,這可能是導致錯誤的原因。 – Biffen 2015-02-10 08:27:56

回答

3

%(1/3)相當於%0,它除以零。你想要的是測試如果長度是由三個divisable,你可以簡單的寫

if (i % 3 == 0) { 
    ... 
} 
0

我認爲問題是,你把兩個整數:

(I)%(1/3)= == I%0這是由零

除以爲了修正它可以這樣做:(ⅰ)%(1.0/3.0) 或:(ⅰ)%3

相關問題