您好,我正在学习Java,我想获取3张300x300、600x600和900x900像素的图像,并通过将图像拆分为3X3网格然后将图像中的每个3x3正方形混合以每次生成随机混合来对其进行加扰运行我的程序。我决定通过将所有像素放入一个数组中,然后对该图像进行加扰(长度为/ 3给我余数为0)来做到这一点。但是,我收到了错误“ 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;

最佳答案

%(1/3)等效于%0,它被零除。您要测试的是长度是否可以除以三,您可以简单地编写

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

10-04 09:58