ArrayIndexOutOfBounds,无法解释为什么?

时间:2014-02-19 14:44:31

标签: java android arrays indexoutofboundsexception

我写了这个方法:

public static Bitmap matrixToBitmap(int[][] slika)
     {

         int w = slika[0].length;
         int h = slika[1].length;

         Bitmap into = Bitmap.createBitmap(w, h, Config.ARGB_8888);
         for (int x = 0; x < w; x++)
         {

             for (int y = 0; y < h; y++)
             {
                 if(slika[x][y] < 128)
                     into.setPixel(x, y, Color.BLACK);
                 else
                     into.setPixel(x, y, Color.WHITE);

             }
         }

         return into;
     }

当我在我的Android应用中使用int[454][454]数组调用它时,它在Logcat中说明了这一点:

Caused by: java.lang.ArrayIndexOutOfBoundsException: length=452; index=452

指向matrixToBitmap方法的这一行:

     if(slika[x][y] < 128)

有人可以解释为什么会这样吗? wh的值变为454和454,就像它们应该的那样。

1 个答案:

答案 0 :(得分:2)

错误在这里:

int w = slika[0].length;
int h = slika[1].length;

发生的事情是,您将数组中第一行的长度设置为w,将第二行的长度设置为h

使其有效,将其更改为:

int w = slika.length;
int h = slika[0].length;