0 java indexoutofboundsexception
我一直存在的问题是它说java.lang.ArrayIndexOutOfBoundsException:165
165是它实际应包含的值的数量.
我尝试将整数数组的长度更改为更大的数字,但它一直给我错误,无论是更大的数字.
我把所有内容都打印出来,看看问题是否可能是我的for循环,但是那里的一切似乎都很好(165个阵列中有正确的数字)
我看不出问题出在哪里.
public int[][] getTilePositionsIn(int pixelLeft, int pixelBottom, int pixelRight, int pixelTop){
int starterTileX = pixelLeft/getTileLength();
if (starterTileX < 0)
starterTileX = 0;
System.out.println(starterTileX);
int starterTileY = pixelBottom/getTileLength();
if (starterTileY < 0)
starterTileY = 0;
System.out.println(starterTileY);
int tileLength = getTileLength();
int blockWidth = pixelRight - pixelLeft + 1;
int widthInTiles = blockWidth/tileLength +1;
int blockHeight = pixelTop - pixelBottom + 1;
int heightInTiles = blockHeight/tileLength +1;
int numberOfTiles = widthInTiles * heightInTiles;
System.out.println(widthInTiles);
System.out.println(heightInTiles);
System.out.println(numberOfTiles);
int[][] tiles = new int[numberOfTiles][2];
for (int y = 0; y <= heightInTiles; y++) {
for (int x = 0; x <= widthInTiles; x++) {
int index = y*widthInTiles + x;
System.out.println(index);
tiles[index][0] = x;
tiles[index][1] = y;
System.out.println(Arrays.toString(tiles[index]));
}
}
return tiles;
}
Run Code Online (Sandbox Code Playgroud)
Jon*_*eet 10
我一直存在的问题是它说java.lang.ArrayIndexOutOfBoundsException:165
165是它实际应包含的值的数量.
右 - 然后索引165超出范围.
Java中的数组是从0开始的,因此如果数组有165个值,则有效索引为0到164(含).
你的for
循环应该使用<
而不是<=
边界:
for (int y = 0; y < heightInTiles; y++) {
for (int x = 0; x < widthInTiles; x++) {
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
250 次 |
最近记录: |