java - 二维数组 Java 的越界错误

标签 java multidimensional-array indexoutofboundsexception

我正在制作一个四排游戏,其中行数和列数由玩家决定(所以可以是任何东西,只要超过四)。因此,用户输入存储在变量“行”和“列”中。该字段看起来像这样,所以第一行始终是数字。

我在搜索获胜者的算法时遇到问题。 虽然我的水平搜索算法运行良好,但具有相同逻辑的垂直搜索算法给我带来了越界错误。如果您能帮助我发现错误,我将非常感激。谢谢你! 1 2 3 4 5 |-|-|-|-| |-|-|-|-| |-|-|-|-|

public static String checkWinner(String [][]field){
//horizontally, which works
   for(int i=1; i<=rows; i++){
       for (int j=0; j<=column-1;j++){
           if (((j>=3 || j==column-1) && field[i][j]!="|_" && field[i][j]==field[i][j-1] && field[i][j]==field[i][j-2] && field[i][j]==field[i][j-3])
           || (field[i][j]!="|_" && field[i][j]==field[i][j+1] && field[i][j]==field[i][j+2] && field[i][j]==field[i][j+3]))
           {
               return field[i][j];
           }
       }
    }


//vertically which doesn't work

   for(int i=0; i<column; i++){
      for (int j=1; j<=rows-1;j++){
         if (((j>=4 || j==rows-1) && field[j][i]!="|_" && field[j][i]==field[j-1][i] && field[j][i]==field[j-2][i] && field[j][i]==field[j-3][i])
         || (field[j][i]!="|_" && field[j][i]==field[j+1][i] && field[j][i]==field[j+2][i] && field[j][i]==field[j+3][i]))
         {
            return field[i][j];
         }
      }
   }
   return null;
}

最佳答案

在水平循环逻辑中,您正在运行 j=0 to column-1 中的列的循环
但是您正在访问field[i][j]值如 j+1, j+2, j+3这将超越 column

例如:用户输入 column值为5但你的逻辑j+2j=4 & i=0将使其访问第六列( field[0][6] ),这显然是OutOfBound

检查 rows 的垂直循环逻辑中是否存在相同错误值

并注意:使用 equals() 比较字符串不使用 equality operators like ==

关于java - 二维数组 Java 的越界错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20599804/

相关文章:

MergeSort算法中的Java IndexOutOfBoundsException

java - 使用正则表达式/字符串方法 : Print Words containing Pattern

java - Android OpenGL ES 2.0 : Cube model is not only distorted (perspective is wrong?),但面部加载不正确(顶点不正确?)

java - 我应该如何在 RxJava 中建模流程?

python - 是否可以在 PyTables 单元格中存储任意形状的多维数组?

java - 使用 Raster 创建图像时出现 ArrayIndexOutOfBoundsException

java - 我如何分析 Java 中的线程?

c++ - 声明指向多维数组的指针并分配数组

javascript - Anuglar2-模型数据跳跃

java - 无法理解 IndexOutOfBoundsException