-2

我有两个可变长度的数组。假设 a 的长度为 10,b 的长度为 12。我需要比较 a 和 b 的第 0 个索引。其次是 a 和 b 的第一个索引。同样 2,3,4..

if(a[0]==b[0]){//some code}
if(a[1]==b[1]){//some code}
...
if(a[length]==b[length]{//some code}

. 我怎样才能把它放在一个循环中并检查?

4

4 回答 4

6
int lim=Math.min(a.length, b.length);
for(int i=0; i<lim; i++){
    //do comparison
}

这假设我们不知道哪个数组更长。

于 2013-09-02T09:27:46.910 回答
2

您将需要一个保持 lentgh ot 最小值的变量,a然后b通过一个简单的循环将项目与 index 进行比较i

int[] a = ...;
int[] b = ...;
int min = Math.min(a.length, b.length);
for (int i = 0; i < min; i++) {
   if (a[i] == b[i]) {
     //do your stuff
   }
}

请注意,仅当您的数组由基元(如)组成时,上面的代码段才有效。int

如果您的数组由对象组成,则必须.equals()if语句中使用。

Object[] a = ...;
Object[] b = ...;
int min = Math.min(a.length, b.length);
for (int i = 0; i < min; i++) {
   if (a[i].equals(b[i])) {
     //do your stuff
   }
}
于 2013-09-02T09:27:59.983 回答
1

你最有可能:

  • 想要获得更小的长度并使用它
  • 应该使用equals()方法而不是==

这是一些代码:

int minLen = arr1.length>arr2.length?arr2.length:arr1.length;
for (int i=0; i< minLen; i++) {
  if (arr1[i].equals(arr2[i])) {
    // some code
  }
}
于 2013-09-02T09:30:08.853 回答
0

你试图实现什么,如果 a 的长度为 10,b 的长度为 12,那么你将如何比较 b[10] 和 b[11],或者你想要:

int length = a.length > b.length? b.length:a.length; 
for(int i=0; i<length; i++) {
    // compare
}
于 2013-09-02T09:33:57.683 回答