我收到错误 线程“main”中的异常java.lang.ArrayIndexOutOfBoundsException:0 这是一个2部分的程序。服务文件和客户端文件。 (对于学校项目)
public String[][]gameBoard(int rows, int columns)
{
for (rows = 0; rows<gameBoard[0].length; rows++)
{
for (columns = 0; columns<gameBoard[0].length; columns++)
{
gameBoard[rows][columns]=""; //initializes the values of the string array (gets rid of null)
System.out.print(gameBoard[rows][columns]+"_ ");
}
System.out.println();
}
return gameBoard;
}
是否出现错误的部分(根据用户输入制作和打印电路板)。
是我在客户端文件中调用它的方式。 如何或导致这种情况超出界限?
谢谢!
答案 0 :(得分:1)
如果您已正确初始化2D阵列,
我的猜测是你的行和列遍历的循环有点不对......
在你的代码中,第一个循环遍历列,内循环也是如此。
您需要遍历每一行的列。
我会尝试
for (rows = 0; rows<gameBoard.length; rows++)
{
for (columns = 0; columns<gameBoard[rows].length; columns++)
{
gameBoard[rows][columns]=""; //initializes the values of the string array (gets rid of null)
System.out.print(gameBoard[rows][columns]+"_ ");
}
System.out.println();
}
return gameBoard;
答案 1 :(得分:0)
您的方法签名表明您将返回String[][]
类型的内容,并且您的方法称为gameBoard
。您正在使用此gameBoard
,就好像它是一个数组,但根本没有名为gameBoard
的数组。
我还不会给你源代码,因为我不想做你的功课,但我可以告诉你,你需要在方法体内创建一个新的本地String[][]
。它应该与您要求的行和列一样大,作为方法的参数,并且应该调用适当的东西(如gameArr
)。
接下来,你的for循环稍微关闭。使用参数而不是错误使用的方法名称 - 这就是他们的目的,对吧? ;)
最后返回新创建的本地数组。
答案 2 :(得分:0)
我很确定此时gameBoard [0]的行未初始化。
在尝试访问[0]之前初始化gameBoard []。
http://www.dummies.com/how-to/content/java-use-arrays-with-two-dimensions-or-more.html