如何使用条件语句来检查数组是否等于一行矩阵?

时间:2015-08-29 18:29:32

标签: java arrays matrix

我有一个int类型的数组,我想检查一下这个数组的所有元素是否等于m×n矩阵的第i行的元素。例如:

array={5,0,2,3};

matrix={{1,3,2,2}{5,0,2,3}{2,1,2,9}};

所以,如果

array[j] = matrix[i][j];

所有j=0,1,2然后

print("the wanted i is: "+i);

我写了这段代码:

public static void main(String[] args){
    int i, j, m=3, n=4;
    int[][] A0 = {{0,2,2,5},{2,0,3,1},{0,2,0,5}}; 
    int[] A={0,2,0,5};
    int seq = 0;
    for(i=0;i<m;i++){
       for(j=0;j<n;j++){
          if(A[j] != A0[i][j]){
             break;
          }
          seq= i;
       }
    }
    System.out.print(seq);
}

但它不能很好地工作,因为它总是继续检查直到最后一行 还有其他更好的主意吗?非常感谢。

5 个答案:

答案 0 :(得分:2)

首先, 如果任何值连续不同, 那么你想跳到外循环的下一次迭代。 你可以通过给外部循环一个标签来做到这一点, 和continue声明。

其次, 一旦找到所有值匹配的行, 你可以突破外圈。

    OUT: for (i = 0; i < m; i++) {
        for (j = 0; j < n; j++) {
            if (A[j] != A0[i][j]) {
                continue OUT;
            }
        }
        seq = i;
        break;
    }

通过使用Arrays.equals,你可以简化很多, 通过消除内环, 所有的标签+继续黑魔法:

    for (i = 0; i < m; i++) {
        if (Arrays.equals(A, A0[i])) {
            seq = i;
            break;
        }
    }

答案 1 :(得分:1)

您有两个for条件。所以当你到达

if(A[j] != A0[i][j]) {
   break;
}

你将打破唯一的for循环,所以你将继续另一个循环:

 for(i=0;i<m;i++) {

所以你必须打破这个,这是一个解决方案

boolean canBreak = false;
for(i=0;i<m;i++) {
    for(j=0;j<n;j++) {
        if(A[j] != A0[i][j]) {
            canBreak = true;
            break;
        }
        if (canBreak) break;
        seq= i;
    }
}

答案 2 :(得分:1)

您只需使用Arrays.equals()

即可
private int[][] matrix;

public boolean equalsRow(int[] row, int index) {
  return Arrays.equals(row, matrix[index]);
}

答案 3 :(得分:1)

    private int[][] myArray;

    public boolean equalsRow(int[] row, int x) 
    {
       return Arrays.equals(row, myArray[x]);
    }

简单

答案 4 :(得分:1)

public static void main(String[] args){
    int i, j, m=3, n=4;int ct=0;
    int[][] A0 = {{0,2,2,5},{2,0,3,1},{0,2,0,5}}; 
    int[] A={0,2,0,5};
    int seq = 0;
    for(i=0;i<m;i++){
       for(j=0;j<n;j++){
          if(A[j] == A0[i][j]){
           ct++;
          } 
          else
          {
              break;
              }

           }
       if(ct==4)
       { 
           seq=i;
           break;
       }

       ct=0;
    }
    System.out.print(seq);
}