Java 如何循环一个数组并得到有多少个零

Java 如何循环一个数组并得到有多少个零,java,arrays,2d,rows,Java,Arrays,2d,Rows,我有一个2D阵列,它就像一个迷宫。 所以我循环第一行,看看是否有一个零(这个零是开口),然后我往下看,看看在这个零下是否还有另一个零 问题是,在前两行之后,我不知道如何编写代码来检查零的左边、右边或下面,然后移动到那里并继续,直到我不能再这样做为止 import java.util.Scanner; public class AssignmentTwo { //int[rows][columns] int[][] gasCavern = {{1,1,1,1,1,0,1},

我有一个2D阵列,它就像一个迷宫。 所以我循环第一行,看看是否有一个零(这个零是开口),然后我往下看,看看在这个零下是否还有另一个零

问题是,在前两行之后,我不知道如何编写代码来检查零的左边、右边或下面,然后移动到那里并继续,直到我不能再这样做为止

import java.util.Scanner;

public class AssignmentTwo
{   
   //int[rows][columns]
    int[][] gasCavern =  {{1,1,1,1,1,0,1},
                          {1,0,0,1,1,0,1},
                          {1,1,1,0,0,0,1},
                          {1,1,0,0,1,1,1},
                          {1,0,1,0,1,0,1},
                          {1,0,1,0,0,0,1},
                          {0,0,0,1,1,1,0},
                          {1,1,1,0,0,0,1}};

    int counter = 0;
    boolean checked = false;

    // forLoop that deals with the first 2 rows.
    // First check 1st row for a zero.
    // Then check down and increment counter which ultimately shows area.
    for(int column = 0; column < gasCavern[0].length; column++)
    {
       //Checking for opening in 1st row
       if(gasCavern[0][column]== 0)
      {
          counter++;
          gasCavern[0][column] = 2;

          if(gasCavern[1][column]==0)
          {
              counter++;
          }
      }
  }


      for(int i=1; i<gasCavern.length; i++)
      {
          for(int j=0; j < gasCavern.length; j++)
          {
              if(gasCavern[i][j])
              {
                  //Looking left
                  if(gasCavern[i][j-1]==2)
                  {                         
                    gasCavern[i][j-1]=2;
                    counter++;
                  }
                  //Looking Right
                  if(gasCavern[i][j+1]==2)
                  {
                      gasCavern[i][j+1]=2;
                      counter++;
                  }
                  //Looking up
                  if(gasCavern[i+1][j]==2)
                  {
                      gasCavern[i+1][j]=2;
                      counter++;
                  }
                  //Looking down
                  if(gasCavern[i-1][j]==2)
                  {
                      gasCavern[i-1][j]==2
                      counter++;
                  }
              }
         }
     }

public boolean checkedForZeros()
{
    //If returning false,go through while loop again
}
import java.util.Scanner;
公开课作业二
{   
//int[行][列]
int[][]气体洞穴={{1,1,1,1,1,0,1},
{1,0,0,1,1,0,1},
{1,1,1,0,0,0,1},
{1,1,0,0,1,1,1},
{1,0,1,0,1,0,1},
{1,0,1,0,0,0,1},
{0,0,0,1,1,1,0},
{1,1,1,0,0,0,1}};
int计数器=0;
布尔检查=假;
//处理前两行的forLoop。
//首先检查第一行是否为零。
//然后检查并增加计数器,最终显示面积。
对于(int column=0;column对于(inti=1;i我想再多想一想,你就会得到它了

想想看,你所要做的就是检查你正在查看的行中的相邻元素,它们只是每边的列。因此:

[column+1]
将检查右侧的元素,并且:

[column-1]
将检查左侧的元素

只是要确保你不会意外地越界

编辑:让我们了解您的进展情况,如果您仍在努力,我将提供更多代码,但请先尝试。

这应该可以:

for (int x = 0; x < gasCavern.length; x++) {
    for (int y = 0; y < gasCavern[x].length; y++) {
        int num = gasCavern[x][y];
        if (num == 0) {
            // if it is a zero
        } else {
            // if it's not a zero (a one)
        }
    }
}
for(int x=0;x
这将检查“0”的所有情况。他需要跟踪一条路径,即如果“0”与另一个“0”相邻。看起来与我上面编辑的类似。仍然有一点问题。谢谢,我将代码编辑到现在的状态。我正在将访问过的所有0都更改为2,这样我就不会再计算它们了。但是我不清楚on如何从这一点开始继续。我的教授建议我用一个while循环将我的2个forLoops与条件一起括起来,但我仍然不确定。@Anonymous你还坚持这个吗?