处理映射总是超出范围

时间:2014-04-24 15:27:39

标签: java maps processing

我试图在处理中制作图表,但继续获取" ArrayIndexOutOfBounds"错误。我很难理解map()语法的概念,任何人都可以为我清除它吗?我不确定地图中的每个数字应该代表什么(x,y,z,a,b);

String[] name = {
  "1st:",
  "5th:",
  "10th:",
  "15th:",
  "20th:",
  "25th:",
  "30th:"
};

int[] temperature = {
  81,
  82,
  84,
  85,
  87,
  88,
  90
};


void setup(){
  size(200,200);
}

void draw(){
  int x=0;
  for(int i=0;i<10;i++){

    if(mouseX>x && mouseX<=x+40){
      fill(255,40,40);
    }else{
      fill(50);
    }

    float h = map(temperature[i], 0, 100, 0, 200);

    rect(x+4,height-h,32,h);

    x+=40;
  }

}

1 个答案:

答案 0 :(得分:2)

你的数组有7个元素,但你迭代了10次。

for(int i=0;i<10;i++){
  ...
  float h = map(temperature[i], 0, 100, 0, 200);

}

要么用额外的3个元素填充你的数组,要么更好:代替10号,你应该使用i < temperature.length()作为for循环的条件。