2015-02-10 57 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