【发布时间】:2014-02-19 14:44:31
【问题描述】:
我写了这个方法:
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)
有人能弄清楚为什么会这样吗? w 和 h 的值变成 454 和 454,就像它们应该的那样。
【问题讨论】:
-
数组索引相对于数组长度的界限是多少?
-
请注意:您应该使用
int w = slika.length;,而不是int w = slika[0].length;,事实上,w和h将始终相同,即使数组的维度不同。 -
你的
w应该是slika.length,而不是slika[0].length -
错误消息表明您的假设不正确:如果消息显示长度=452,则它不是 int[454][454]
-
现在我发现实际上 int[452][454] 被传递了,我在调试时对 w 和 h 值感到困惑,实际上是 454 和 454,因为我的错误是你的答案更正了!谢谢大家!
标签: java android arrays indexoutofboundsexception