您好我正在学习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;
答案 0 :(得分:3)
%(1/3)
相当于%0
,它除以零。你想要的是测试长度是否可以除以3,你可以简单地写
if (i % 3 == 0) {
...
}
答案 1 :(得分:0)
我认为问题在于你划分了两个整数:
(i)%(1/3)=== i%0除以零
要修复它你可以:(i)%(1.0 / 3.0) 或:(i)%3