java - 处理映射总是越界

标签 java maps processing

我正在尝试在处理中制作图表,但不断收到“ArrayIndexOutOfBounds”错误。我很难理解 map() 语法的概念,有人能为我解答吗?我不确定 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;
  }

}

最佳答案

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

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

}

要么用额外的 3 个元素填充数组,要么更好:您应该使用 i < temperature.length() 而不是数字 10。作为 for 循环中的条件。

关于java - 处理映射总是越界,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23273278/

相关文章:

java - 如何从 jTable 中获取选定的行值并将该值添加到另一个 jTable 中?

javascript - 在 svg 中将两个元素添加到同一级别

javascript - 数组中的表,隐藏空行

java - 在Android中为触摸屏实现死区

java - 将对象传递给类时,如何访问它的变量/函数?

java - 我的代码说小程序未初始化

java - 发送/接收数据出现问题

java - 使用 JNI 在 Java 和 C 之间进行高效的数据共享

api - 谷歌地图 API 与谷歌地图引擎?

java - Knight's Tour GUI 处理中