检查二维数组中一行中的多个值是否相同

时间:2015-03-15 21:52:56

标签: java arrays multidimensional-array

我有一个数组列表,它的大小取决于用户在启动时指定的两个变量,然后用零填充。随着程序的进展,一些网格将填充一些,一些有两个。这一切都很简单,我不知道怎么做是检查我的数组中是否有任何零行,无论是水平还是垂直。谁知道怎么做?

这里只是一个编辑,感谢所有的建议,所有答案都是很好的解决方案,但我想念我的问题,我需要检查零行,从2长到任何用户设置的大小数组到。

5 个答案:

答案 0 :(得分:0)

你必须创建一个for循环来循环遍历该行,然后在另一个for循环中(不要忘记使用不同的变量)循环遍历列

答案 1 :(得分:0)

我不知道任何解决此问题的实用程序类,但您可以使用方法Arrays.deepEquals轻松创建一个。

创建一个零数组,并将其与矩阵中的每一行和每个文件进行比较,以获得哪些是零值数组

答案 2 :(得分:0)

我的一个想法是创建两个一维数组,一个具有长度,另一个具有2D数组的高度,并用零填充它们。然后使用两个简单的for循环,您可以读取2D数组中的所有值。对于每一行,如果找到的值与0不同,则将相应数组中的该位置设置为1。我想只需编写一些代码并向您展示就更简单了:

int x = 10, y = 5; // numbers just for the example
int values[][] = new int[x][y];
int foo1[] = new int[x];
int foo2[] = new int[y];

for(int i=0 ; i<x ; i++)
    for(int j=0 ; i<y ; j++)
        if(values[i][j] != 0) {
            foo1[i] = 1;
            foo2[j] = 1;
        }

完成此操作后,您可以遍历foo1 []和foo2 [],如果找到任何零,您将知道在相应的行或列中,值[] [] <中有一行或一列零/ p>

答案 3 :(得分:0)

一种可能的方法是在处理它们时将列和行标记为不是全0。这是Pseudo-code中的想法

notAll0sC = Array [numberOfColumns]已启动为0

notAll0sR = Array [numberOfRows]已启动为0

现在,在您处理过程中,您将拥有类似

的内容

myTwoDimArray [R] [C] = 1

notAll0sC [C] = 1

notAll0sR [R] = 1

然后在最后你可以循环遍历notAll0sC和notAll0sR来找出哪些仍然是0,因此那些将是0和0的行和列。

答案 4 :(得分:0)

我希望你能理解你的问题。这可能会有所帮助..

int m,n;    
for(int i=0;i<a.length;i++){
       m=0;
       for(int j=0;j<a[0].length;j++){
           if(a[i][j]==0)
                 m++;
           else break;
       }
       if(m==a[0].length)
           // if true? There's a row of zeros
}

for(int u=0;u<a[0].length;u++){
       n=0;
       for(int v=0;v<a.length;v++){
           if(a[v][u]==0)
                 n++;
           else break;
       }
       if(n==a.length)
           // if true? There's a columns of zeros
}