我有一个 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/