Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 处理:数组索引超出范围_Arrays_Processing_Indexoutofboundsexception - Fatal编程技术网

Arrays 处理:数组索引超出范围

Arrays 处理:数组索引超出范围,arrays,processing,indexoutofboundsexception,Arrays,Processing,Indexoutofboundsexception,我不熟悉处理,正在创建一个草图,其中600px x x 600px的画布填充了我的orange[]调色板中随机颜色的50px矩形。块的随机形成需要位于draw()函数的内部,以便正确地使用我将在后面输入的一些条件进行操作 我得到的错误是ArrayIndexOutOfBoundsException:12在这一行: randomSize[varCreator] = sIncrement[int(random(0,sIncrement.length-1))]; 我似乎不明白为什么会发生这种错误。我已

我不熟悉处理,正在创建一个草图,其中600px x x 600px的画布填充了我的
orange[]
调色板中随机颜色的50px矩形。块的随机形成需要位于
draw()
函数的内部,以便正确地使用我将在后面输入的一些条件进行操作

我得到的错误是ArrayIndexOutOfBoundsException:12在这一行:

randomSize[varCreator] = sIncrement[int(random(0,sIncrement.length-1))];
我似乎不明白为什么会发生这种错误。我已经研究过相关的问题,也许这只是因为我太新了,但我无法理解:

int x; //x coordinate
int y; //y coordinat
int s = 50; //rect size
int wide = 600; //canvas width
int tall = 600; //canvas height
int[] sIncrement = new int[12];//{s, s*2, s*3, s*4, s*5, s*6};

//colors
int[] oranges = {
  #773600, #5f3613, #552700, #9c5215, #9c5c26
};
int[] blues = {
  #004848, #0c3939, #003333, #107979, #1e7979
};
int[] palette = oranges;//holds current color pallete

//random
int fillColor = palette[int(random(0, palette.length))]; //random starting fill color
int changeColor = palette[int(random(0, palette.length))]; //random new color
int[] randomSize = new int[sIncrement.length]; //array of lots of random s values to place newly color changed blocks


//setup
void setup(){
  size(wide, tall);
  background(255);
  noStroke();
  frameRate(24);

  /*fills sIncrement array with incrementing s values (i.e. if s = 50 then array 
   contains 50, 100, 150, etc...) from 0 to canvas width for use in a conditional statement*/
  for(int i = 0; i <= sIncrement.length-1; i++){
    sIncrement[i] = s*i;
  }

 //creates multiple randomSize variables for if() x or y == randomSize[varCreator] 
 for(int varCreator = 0; varCreator <= (width/s)+(height/s); varCreator++){
   randomSize[varCreator] = sIncrement[int(random(0,sIncrement.length-1))];
 }
}

//draw
void draw(){
  fill(fillColor); //selects random color from palette

  //draws grid colored boxes with s size
  for (y = 0; y <= height; y+= s) {
    for (x = 0; x <= width; x+= s) {
      if(x == sIncrement[randomSize[1]] && y == sIncrement[randomSize[3]]){
        fill(changeColor); //selects random color from palette
        rect(x, y, s, s);
      }

      else{
      fill(fillColor);
     // fill(palette[int(random(0, palette.length))]); //selects random color from palette
      rect(x, y, s, s);
      }
    }
  }
}
intx//x坐标
int-y//y坐标
int s=50//矩形大小
int宽=600//画布宽度
int高=600//帆布高度
int[]sIncrement=新的int[12]//{s,s*2,s*3,s*4,s*5,s*6};
//颜色
int[]橙子={
#773600、5f3613、552700、9c5215、9c5c26
};
int[]蓝色={
#004848、0c3939、003333、107979、1e7979
};
int[]调色板=橘子//保存当前颜色托盘
//随机的
int fillColor=palete[int(随机(0,palete.length))]//随机起始填充颜色
int changeColor=palete[int(随机(0,palete.length))]//随机新颜色
int[]randomSize=新int[sIncrement.length]//大量随机s值的数组,用于放置新更改的颜色块
//设置
无效设置(){
尺寸(宽、高);
背景(255);
仰泳();
帧率(24);
/*用递增的s值填充增量数组(即,如果s=50,则为数组
包含从0到画布宽度的50、100、150等,用于条件语句*/

对于(int i=0;i通过代码进行跟踪,您有:

int[] sIncrement = new int[12];                    // sIncrement initialized with size 12
int[] randomSize = new int[sIncrement.length];     // randomSize initialized with size 12
for(... ; varCreator <= (width/s)+(height/s); ...) // varcreator <= 24!
randomSize[varCreator] = ...                       // Problem line
int[]sIncrement=new int[12];//sIncrement初始化为大小12
int[]randomSize=new int[sIncrement.length];//使用大小12初始化randomSize

对于(…;varCreator您正在访问数组的元素
randomSize
。这个数组有多长?让我们看看它的声明:

int[] randomSize = new int[sIncrement.length];
因此,它的长度与数组
sIncrement
的长度相同

int[] sIncrement = new int[12];
sIncrement
的长度,因此
randomSize
的长度是12

在此代码中:

for(int varCreator = 0; varCreator <= (width/s)+(height/s); varCreator++){
    randomSize[varCreator] = sIncrement[int(random(0,sIncrement.length-1))];
}

用于(int varCreator=0;varCreator这似乎不是Java。即使如此……我也不确定错误消息的哪一部分确切地告诉您问题所在……令人困惑。@OMGPonies,因为这正是问题所在!@BrianRoach我刚刚意识到我的错误所在。我已经看了很长时间了,如果我浪费了你几秒钟的时间。非常感谢你的详细描述!