首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >2D Array Java出现越界错误

2D Array Java出现越界错误
EN

Stack Overflow用户
提问于 2013-12-16 05:05:31
回答 1查看 139关注 0票数 1

我正在做一个连续四行的游戏,其中的行数和列数由玩家决定(所以可以是任何东西,只要多于四个)。因此,用户输入被存储在变量“row”和"column“中。字段看起来像这样,所以第一行总是数字。

我在搜索获胜者的算法上遇到了麻烦。虽然我的水平搜索算法运行良好,但具有相同逻辑的垂直搜索算法给了我越界的error.If,您可以帮助我找出错误,我将非常感激。谢谢!1 2 3 4 5|-|

代码语言:javascript
复制
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;
}
EN

回答 1

Stack Overflow用户

发布于 2013-12-16 05:14:05

在您的水平循环逻辑中,您正在运行来自j=0 to column-1的for列循环

但是,您将使用j+1, j+2, j+3之类的值访问field[i][j],这些值将超出column的范围

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

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

和as注意:使用equals()而不是equality operators like ==比较字符串

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20599804

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档