Java将2D数组与数字进行比较给出了异常
我试图将2D数组与数字进行比较,但它引发了一个异常 代码Java将2D数组与数字进行比较给出了异常,java,arrays,multidimensional-array,Java,Arrays,Multidimensional Array,我试图将2D数组与数字进行比较,但它引发了一个异常 代码 import org.newdawn.slick.Color; 公共班机{ 公共静态int[]map={{{0,2,1,3,4,1,1,3,4,1,3,5,1}, {1, 2, 1, 3, 4, 1, 1, 3, 4, 1, 3, 5, 1}, {2, 2, 1, 3, 4, 1, 1, 3, 4, 1, 3, 5, 1}, {3, 2, 1, 3, 4, 1, 1, 3, 4, 1, 3, 5, 1}, {4, 2, 1, 3, 4,
import org.newdawn.slick.Color;
公共班机{
公共静态int[]map={{{0,2,1,3,4,1,1,3,4,1,3,5,1},
{1, 2, 1, 3, 4, 1, 1, 3, 4, 1, 3, 5, 1},
{2, 2, 1, 3, 4, 1, 1, 3, 4, 1, 3, 5, 1},
{3, 2, 1, 3, 4, 1, 1, 3, 4, 1, 3, 5, 1},
{4, 2, 1, 3, 4, 1, 1, 3, 4, 1, 3, 5, 1},
{5, 2, 1, 3, 4, 1, 1, 3, 4, 1, 3, 5, 1},
{6, 2, 1, 3, 4, 1, 1, 3, 4, 1, 3, 5, 1},
{7, 2, 1, 3, 4, 1, 1, 3, 4, 1, 3, 5, 1}};
公共静态void main(字符串参数[]){
int I=0;
int II=0;
对于(int y=0;y<7;y++){
对于(int x=0;x<11;x++){
if(map[x][y]==0){
g、 setColor(Color.blue);
g、 fillRect(I,II,100100);
}
if(map[x][y]==1){
g、 setColor(颜色为橙色);
g、 fillRect(I,II,100100);
}
if(map[x][y]==2){
g、 setColor(Color.white);
g、 fillRect(I,II,100100);
}
if(map[x][y]==3){
g、 setColor(Color.red);
g、 fillRect(I,II,100100);
}
if(map[x][y]==4){
g、 setColor(Color.green);
g、 fillRect(I,II,100100);
}
if(map[x][y]==5){
g、 setColor(颜色为灰色);
g、 fillRect(I,II,100100);
}
I=x*100;
I=y*100;
}
}
}
}
它引发的异常是java.lang.ArrayIndexOutOfBoundsException:8
这适用于裸骨平铺贴图系统,如果要测试这一点,需要使用slick2D并将其放入渲染循环。这是因为您试图访问行
8
,并且您只有最大位置7
请记住,行和列的索引从位置0开始,以长度-1结束。
array[rows][columns]
此外,您必须记住数组的第一个位置,在您的例子中,x
,是行,y
是列。
array[rows][columns]
因此,您必须更改循环中变量的顺序。像这样:
for(int x = 0; x < map.length; x++){
for(int y = 0; y < map[x].length; y++){
for(int x=0;x
代码的其余部分可以与上面的代码类似
我希望它会对您有所帮助!这是因为您正在尝试访问行
8
,并且您只有7
的最大位置
请记住,行和列的索引从位置0开始,以长度-1结束。
array[rows][columns]
此外,您必须记住数组的第一个位置,在您的例子中,x
,是行,y
是列。
array[rows][columns]
因此,您必须更改循环中变量的顺序。如下所示:
for(int x = 0; x < map.length; x++){
for(int y = 0; y < map[x].length; y++){
for(int x=0;x
代码的其余部分可以与上面的代码类似
我希望它会对您有所帮助!这是因为您正在尝试访问行
8
,并且您只有7
的最大位置
请记住,行和列的索引从位置0开始,以长度-1结束。
array[rows][columns]
此外,您必须记住数组的第一个位置,在您的例子中,x
,是行,y
是列。
array[rows][columns]
因此,您必须更改循环中变量的顺序。如下所示:
for(int x = 0; x < map.length; x++){
for(int y = 0; y < map[x].length; y++){
for(int x=0;x
代码的其余部分可以与上面的代码类似
我希望它会对您有所帮助!这是因为您正在尝试访问行
8
,并且您只有7
的最大位置
请记住,行和列的索引从位置0开始,以长度-1结束。
array[rows][columns]
此外,您必须记住数组的第一个位置,在您的例子中,x
,是行,y
是列。
array[rows][columns]
因此,您必须更改循环中变量的顺序。如下所示:
for(int x = 0; x < map.length; x++){
for(int y = 0; y < map[x].length; y++){
for(int x=0;x
代码的其余部分可以与上面的代码类似
我希望它会对您有所帮助!它给了您什么例外?变量I的定义和用途是什么?您应该使用
map.length
和map[x].length
不是绝对值,而是提供了一个演示您的问题的示例。这不是一个代码转储,而是您正在做的一个示例,它突出了您的问题。这将减少混乱并更好地响应感谢您的输入各位,请查看编辑。它给您带来了什么异常?这是什么e变量I的定义和用途?应使用map.length
和map[x].length
不是绝对值,而是提供了一个演示您的问题的示例。这不是一个代码转储,而是您正在做的一个示例,它突出了您的问题。这将减少混乱并更好地响应感谢您的输入各位,请查看编辑。它给您带来了什么异常?这是什么e变量I的定义和用途?您应该使用map.length
和map[x].length
而不是绝对值来说明您的问题。这不是代码转储,而是您正在做的一个示例,它突出了