不清楚使用数组更多元素然后预先定义

时间:2014-10-18 15:51:29

标签: java arrays

我必须遵循完整参考文献中的代码

它有关以下语法: - “hist [y] ++;”出现在那里 它关于创建img的亮度值的直方图。

我想知道它在代码中意味着什么,因为hist []定义为int [256],而此处的itteration远大于256。

int hist[] = new int[256];   <<<<<<<<defined here 256 elements

...

for (int i=0; i<iw*ih; i++) {
    int p = pixels[i];
    int r = 0xff & (p >> 16);
    int g = 0xff & (p >> 8);
    int b = 0xff & (p);
    int y = (int) (.33 * r + .56 * g + .11 * b);
    hist[y]++;     <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<here many more elements
}

等。等。

1 个答案:

答案 0 :(得分:1)

  

hist[y]++;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt; &LT;&LT;&LT;&LT;&LT;&LT;&LT;&LT;&LT;&LT;&LT;&LT;&LT;&LT;&LT;&LT;&LT;&LT;&LT;这里还有更多元素

您可能将表达式hist[y]++hist[y++]混淆或将y与循环索引i混淆。

表达式hist[y]++只是将索引y的值增加1。索引y在上面的行中设置为

int y = (int) (.33 * r + .56 * g + .11 * b);

由于rgb都是<= 255y的最大值为

  .33*255 + .56*255 + .11*255
= (.33 + .56 + .11) * 255
= 1 * 255

所以256个元素的数组就足够了。