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

标签 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);
}

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

最佳答案

首先, 如果任何值连续不同, 那么你想跳到外循环的下一次迭代。 你可以通过给外循环一个标签来做到这一点, 和 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;
        }
    }

关于java - 如何使用条件语句检查数组是否等于矩阵的一行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32289441/

相关文章:

java - 使用 Hibernate 连接不同数据库中的 2 个表

java - 抽屉导航上的 NullPointerException

java - 在 Java 中使用 Apache.poi 通过过滤器获取 Excel 记录

javascript - 在 state 中更新数组的状态

java - 使用 java 中的键对 Json 响应进行分组 - android studio

java - 如何找到矩阵中所有子平方的总和?

java - 如何使用 JSP/Servlets 应用程序在特定时间运行服务?

c# - 如何在 C# 中将值类型转换为 byte[]?

c# - C# 中的代码库/应用程序

R矩阵包: Meaning of the attributes in the dgCMatrix class for sparse matrices