-2

可変長の配列が 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

lengh ot の最小値を保持する変数が必要になりab単純なループでアイテムを 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 に答える