Java 如何循环一个数组并得到有多少个零
我有一个2D阵列,它就像一个迷宫。 所以我循环第一行,看看是否有一个零(这个零是开口),然后我往下看,看看在这个零下是否还有另一个零 问题是,在前两行之后,我不知道如何编写代码来检查零的左边、右边或下面,然后移动到那里并继续,直到我不能再这样做为止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},
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你还坚持这个吗?