繁体   English   中英

运行程序时出现“ java.lang.ArithmeticException:/减零”

[英]I am getting “java.lang.ArithmeticException: / by zero” when I run my program

您好,我正在学习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) {
    ...
}

我认为问题在于您将两个整数相除:

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

要解决此问题,您可以执行:(i)%(1.0 / 3.0)或:(i)%3

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM