2015-02-10 3 views
0

Привет, я изучаю Java, и я пытаюсь получить 3 изображения с разрешением 300x300, 600x600 и 900x900 пикселей и скремблировать их изображение в сетку 3X3, а затем смешивая каждый квадрат 3x3 в этом изображении, чтобы генерировать случайный микс каждый раз, когда я запускаю свою программу. Я решил сделать это, поместив все пиксели в массив и затем скремблируя это изображение, где длина/3 дает мне остаток 0. Однако я получаю сообщение об ошибке «java.lang.ArithmeticException:/by zero». Может кто-нибудь помочь мне исправить мою проблему, пожалуйста.Я получаю «java.lang.ArithmeticException:/zero» при запуске моей программы

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

ответ

3

%(1/3) эквивалентно %0, что деление на ноль. То, что вы хотите, это испытание, если длина divisable на три, вы можете просто написать

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

Я думаю, что проблема в том, что вы делите два целых числа:

(я)% (1/3) = == 0% я, который деления на нуль

Чтобы исправить это можно сделать: (I)% (1,0/3,0) или: (я)% 3

Смежные вопросы