java.lang.ArrayIndexOutOfBoundsException:0 - 我无法弄清楚为什么代码超出范围

时间:2013-09-27 20:39:51

标签: java project indexoutofboundsexception

我收到错误 线程“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;
 }

是否出现错误的部分(根据用户输入制作和打印电路板)。

是我在客户端文件中调用它的方式。 如何或导致这种情况超出界限?

谢谢!

3 个答案:

答案 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