处理 - 无法将float转换为int

时间:2014-11-26 16:28:40

标签: compilation processing

我有这样的代码:

    float[] x = {5,11,17,23,26,23,18,12,7,4,5,6,7,6,3,2,5,5,4,3,3,5,10,18,26,32,26,18,10,5,2,10,12,14,15,9,8,14,13,9,7,5,3,8,17,33,49,32,16,7,3,1,13,16,23,31,26,25,30,22,14,9,7,0,1,9,38,101,38,9,0,1,0,12,17,32,60,89,88,59,30,15,8,6,6,14,19,10,279,10,19,14,8,3,6,10,26,89,360,359,88,25,9,4,2,10,30,82,259,1000,260,82,32,13,5,5,9,26,89,358,359,89,26,9,4,3,6,13,19,9,280,9,20,14,8,3,11,17,31,60,89,89,60,31,16,9,6,0,1,9,38,102,38,9,0,1,0,12,16,23,30,25,25,31,22,14,10,7,3,8,17,33,50,33,17,8,3,1,9,11,13,14,8,9,15,13,10,7,6,5,10,18,27,33,27,18,11,6,3,5,6,6,6,2,3,6,6,5,4,1,5,11,18,24,27,24,18,12,7,3};

    void setup(){
    size(620,620);
    float k=1;
    float q=0;
    for (float j=0;j<height;j=j+30){
      if(k%2!=0){
        for(float i=30;i<width;i=i+60){
            fill(kolor(x[q]));
            rect(i,j,20,20);
            q=q+1;
        }
       k++;
      } else {
        for(float i=0;i<width;i=i+60){
            fill(kolor(x[q]));
            rect(i,j,20,20);
            q=q+1;
            }
       k++;
      }
     }
    }

    float kolor(float input){
          return map(input,0,1000,0,255);
    }

当我尝试编译时,我得到“无法将float转换为int”错误,与行fill(kolor(x[q]));相关联。

我尝试将其更改为fill((int)kolor(x[q]));

你知道如何解决这个问题吗?

2 个答案:

答案 0 :(得分:1)

fill((int)kolor(x[q])的问题是x是一个数组,并且您只能使用整数访问数组成员,而使用q访问它是一个浮点数。< / p>

尝试将float q = 0;更改为int q = 0;

顺便说一下,它看起来像java代码,是java吗?

答案 1 :(得分:0)

为什么你首先使用花车?您可能应该使用整数,特别是那里的%

对于那些感兴趣的人,

Herefill()命令的签名。