Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 当我请求的数组索引不';不要越界_Java_Indexoutofboundsexception - Fatal编程技术网

Java 当我请求的数组索引不';不要越界

Java 当我请求的数组索引不';不要越界,java,indexoutofboundsexception,Java,Indexoutofboundsexception,我一直遇到的问题是,它显示java.lang.ArrayIndexOutOfBoundsException:165 165是它实际应包含的值的数目 我尝试将整数数组的长度更改为更大的数字,但它保持不变 给我一个错误,可能是一个更大的数字 我把所有的东西都打印出来看看问题是否出在我的for循环上, 但那里的一切似乎都很好(165个数组中的数字是否正确) 我看不出问题出在哪里 public int[][] getTilePositionsIn(int pixelLeft, int pixelBott

我一直遇到的问题是,它显示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;
}
public int[][]getTilePositionsIn(int-pixelLeft、int-pixelBottom、int-pixelRight、int-pixelTop){
int starterTileX=pixelLeft/getTileLength();
如果(起动器Tilex<0)
starterTileX=0;
系统输出打印LN(starterTileX);
int starterTileY=pixelbooth/getTileLength();
如果(起始时间小于0)
starterTileY=0;
System.out.println(starterTileY);
int tillelength=getTileLength();
int blockWidth=像素右-像素左+1;
int WITHINTILES=块宽度/瓷砖长度+1;
int blockHeight=像素顶部-像素底部+1;
int heightInTiles=块高/瓷砖长度+1;
int numberOfTiles=宽度Intiles*高度Intiles;
系统输出打印LN(宽度整数);
系统输出打印LN(高度单位);
System.out.println(numberOfTiles);
int[]tiles=新int[numberOfTiles][2];
对于(int y=0;y
我一直遇到的问题是,它显示java.lang.ArrayIndexOutOfBoundsException:165

165是它实际应包含的值的数目

右-则索引165超出范围

Java中的数组是基于0的,因此如果一个数组有165个值,则有效索引为0到164(包括0到164)

您的
for
循环应使用

for (int y = 0; y < heightInTiles; y++) {
    for (int x = 0; x < widthInTiles; x++) {