gpt4 book ai didi

java - 当我要求的数组索引没有超出范围时,出现 ArrayIndexOutOfBoundsException

转载 作者:行者123 更新时间:2023-12-01 06:43:13 25 4
gpt4 key购买 nike

我一直遇到的问题是它显示 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;
}

最佳答案

The problem I keep having is that it says java.lang.ArrayIndexOutOfBoundsException: 165

165 is the number of values it should actually contain.

对 - 那么索引 165 就出界了。

Java 中的数组是从 0 开始的,因此如果数组有 165 个值,则有效索引为 0 到 164(含)。

您的for循环应使用 <而不是<=对于边界:

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

关于java - 当我要求的数组索引没有超出范围时,出现 ArrayIndexOutOfBoundsException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29489788/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com