1

我在线程“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;
 }

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

是我在客户端文件中调用它的方式。如何或是什么导致这超出范围?

谢谢!

4

3 回答 3

1

如果您已正确初始化二维数组,

我的猜测是你的行和列遍历循环有点偏离......

在您的代码中,第一个循环遍历列,内部循环也是如此。

您需要遍历每一行的列。

我会尝试

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;
于 2013-09-27T21:00:16.700 回答
0

您的方法签名表明您将返回一个类型的东西String[][],并且您的方法被调用gameBoard。您将其gameBoard用作数组,但根本没有调用数组gameBoard

我暂时不会给你源代码,因为我不想做你的功课,但我可以告诉你,你需要String[][]在方法体中创建一个新的本地。它应该与您要求的方法参数的行和列一样大,并且应该调用适当的名称(例如gameArr)。

接下来,你的 for 循环稍微偏离了。使用参数而不是错误使用的方法名称——这就是它们的用途,对吧?;)

最后返回您新创建的本地数组。

于 2013-09-27T20:42:49.520 回答
0

我很确定此时与 gameBoard[0] 的行未初始化。

在尝试访问 [0] 之前初始化 gameBoard[]。

http://www.dummies.com/how-to/content/java-use-arrays-with-two-dimensions-or-more.html

于 2013-09-27T20:47:43.630 回答