Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 如何检查二维数组中的行元素_Arrays_If Statement_Boolean - Fatal编程技术网

Arrays 如何检查二维数组中的行元素

Arrays 如何检查二维数组中的行元素,arrays,if-statement,boolean,Arrays,If Statement,Boolean,所以,我想做的是一场三连胜的比赛,到目前为止我已经成功了,但是当我要赢得比赛时,我有点挣扎,因为我需要检查一行、一列或对角线的所有元素是否相同 到目前为止,我已经通过使用一个布尔值、一个计数器和一个for循环使它工作起来。下面是我的代码的外观示例 //Code to check the rows horizontally public void checkH(){ int cont1 = 0; Boolean winner1 = false; for(int i=0;i<size;i++)

所以,我想做的是一场三连胜的比赛,到目前为止我已经成功了,但是当我要赢得比赛时,我有点挣扎,因为我需要检查一行、一列或对角线的所有元素是否相同

到目前为止,我已经通过使用一个布尔值、一个计数器和一个for循环使它工作起来。下面是我的代码的外观示例

//Code to check the rows horizontally
public void checkH(){
int cont1 = 0;
Boolean winner1 = false;
for(int i=0;i<size;i++){
    if(a[0][i]==1 || a[1][i]==1 || a[2][i]==1){
        cont1++;
        if(cont1==3){
            winner1 = true;
        }
然后,计数器仍然会碰到三个,即使它们没有对齐。我知道我还没有在程序中详细说明这种情况,但这正是我正在努力解决的问题。我想做的是能够用循环来生成条件,这样我就不必用if语句来填充整个过程


非常感谢你们能给我的任何线索。提前谢谢

如果您发现很难在web上搜索解决方案/教程,请注意,三连胜游戏也称为tic tac toe。所以,如果你搜索“tic-tac-toe算法”,你会发现几个关于如何解决它的例子,因为这是一个比较常见的面试问题。为了方便读者

现在,对于使用for循环而不是链式if(或具有多个逻辑比较的if)的愿望,这是一个关于矩阵的行、列和对角遍历的问题。这里是的参考,这里是的另一个参考

针对您的问题,下面是一个伪代码,显示使用for检查列和行,以及使用少量if语句检查单元格值。但请注意,这只是一个例子,因为有很多有趣的方法来解决一个tic-tac-toe游戏,你可能想看看,从到

public bool checkRow(){
int i,j;
整数计数=0;
//按行访问元素
对于(i=0;i
int a[][] = {{1,0,0},
         {1,1,0},
         {0,0,0}};
public bool checkRow() { 

  int i, j; 
  int count = 0;

  // accessing element row wise 
  for (i = 0; i < MAX; i++) { 
    for (j = 0; j < MAX; j++) { 
        // Considering we were checking for 1
        // And array can have 0 or 1
        // You can add the cell value and avoid an if
        count += arr[i][j];
       // if you go with arr[j][i] you will be traversing the columns and not the rows.
    } 

    // if all cells in the row are 1, we have a winner
    if(count == MAX)
        return true;
  } 

  return false
}