我得到" java.lang.ArithmeticException:/ by zero"当我运行我的程序

时间:2015-02-10 08:25:10

标签: java

您好我正在学习Java,我正在尝试获得300x300,600x600和900x900像素的3张图像,并通过将图像分割成3X3网格然后将该图像中的每个3x3正方形混合以生成随机混合来对其进行加扰每次我运行我的程序。我决定通过将所有像素放入一个数组然后加扰那个长度/ 3给我剩余0的图像来做到这一点。但是我得到了错误" java.lang.ArithmeticException:/ by zero&# 34 ;.有人可以帮我解决我的问题吗。

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 个答案:

答案 0 :(得分:3)

%(1/3)相当于%0,它除以零。你想要的是测试长度是否可以除以3,你可以简单地写

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

答案 1 :(得分:0)

我认为问题在于你划分了两个整数:

(i)%(1/3)=== i%0除以零

要修复它你可以:(i)%(1.0 / 3.0) 或:(i)%3