ArrayIndexOutOfBounds 8处理异常

时间:2015-03-06 13:53:14

标签: java processing

我收到了ArrayIndexOutOfBounds 8的错误我不知道为什么 - 我的图片从0开始。线条处理似乎突出显示为image(images[ic], gridX, gridY, stepX, stepY);  任何帮助解决这个问题都会非常有帮助。提前谢谢!

import java.util.Calendar;
PImage[] images = new PImage[8];
int ic;
PImage img;

void setup(){
  size(500, 500);

  for ( int i = 0; i< images.length; i++ )
{
images[i] = loadImage( i + ".png" );   // make sure images "0.jpg" to "11.jpg" exist
}  
}

void draw(){
  ic= 0;
  float tileCountX =10;
  float tileCountY = 10;
  float stepX = width/tileCountX;
  float stepY = height/tileCountY;
  for (float gridY = 0; gridY < height; gridY += stepY){
    for (float gridX = 0; gridX < width; gridX += stepX){
           image(images[ic], gridX, gridY, stepX, stepY);
           ic++;  
  }
  }
}

void keyReleased(){
  if (key=='s' || key=='S') saveFrame(timestamp()+"_##.png");
}

// timestamp
String timestamp() {
  Calendar now = Calendar.getInstance();
  return String.format("%1$ty%1$tm%1$td_%1$tH%1$tM%1$tS", now);
}

1 个答案:

答案 0 :(得分:1)

看看这段代码:

  ic= 0;
  float tileCountX =10;
  float tileCountY = 10;
  float stepX = width/tileCountX;
  float stepY = height/tileCountY;
  for (float gridY = 0; gridY < height; gridY += stepY){
    for (float gridX = 0; gridX < width; gridX += stepX){
           image(images[ic], gridX, gridY, stepX, stepY);
           ic++;  
     }
   }

你的宽度和高度是500,所以内循环将执行500次。你每次都在递增ic。

您正在使用该ic变量索引到您的阵列中 - 但您的阵列只有8个索引,而不是500个。这就是造成错误的原因。

你需要后退一步,试着找出你想要做的事情,因为这段代码并没有多大意义。