成功打印Conway生命游戏的初始游戏板时出现编译错误

时间:2014-03-11 22:47:28

标签: java arrays

去年我使用Python参与了康威的生命游戏。今年,我正在修读Java课程。我们的进展非常缓慢,我甚至无法理解教授,所以我有点努力。

上次我创建它时,我从未真正理解生命游戏背后的概念,所以我正在用Java重新探索它。现在,我只是想打印出我最初的游戏板。这是正常的,但编译器向我抛出一个我无法理解的错误。我已经尝试使用Google搜索来找到答案,但已经出现了一些解释。请帮帮忙?

 public class Game {
        public static void main(String args[])    {

       int i = 0;
       int j = 0;
       int a = 0;
       int b = 5;

       int[][] gameBoard = new int[][]{
       { 1, 2, 3, 4, 5},
       { 2, 0, 0, 0, 0},
       { 3, 0, 0, 0, 0},
       { 4, 0, 0, 0, 0},
       { 5, 0, 0, 0, 0}
       };

       while(a != b)
       {
          if(j == 5)
          {
             i++;
             j = 0;
             a++;
             System.out.println();
          }

          System.out.printf("%d ",gameBoard[i][j]);

          j++;

       }
   }
}

编译器抛出此错误:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5
at Game.main(Game.java:30)

1 个答案:

答案 0 :(得分:2)

允许i继续递增,直到它大于4 - 然后超过数组的限制。数组神奇地变得更大 - 你必须控制你的索引大小!

我怀疑你不是(只是)想要a!=b条件而是i<5