比较java中相同数组的元素

时间:2014-05-04 19:06:51

标签: java arrays compare elements between

我正在尝试比较同一个数组的元素。这意味着我想要将0元素与其他所有元素进行比较,将1元素与其他所有元素进行比较,依此类推。问题是它没有按预期工作。 。我做的是我有两个for循环,从0到array.length-1 ..然后我有一个if语句如下:if(a [i]!= a [j + 1])

for (int i = 0; i < a.length - 1; i++) {
    for (int k = 0; k < a.length - 1; k++) {
        if (a[i] != a[k + 1]) {
            System.out.println(a[i] + " not the same with  " + a[k + 1] + "\n");
        }
    }
}

4 个答案:

答案 0 :(得分:33)

首先,您需要循环到< a.length而不是a.length - 1。因为这比你需要包含上限严格要少。

因此,要检查您可以执行的所有元素对:

for (int i = 0; i < a.length; i++) {
    for (int k = 0; k < a.length; k++) {
        if (a[i] != a[k]) {
            //do stuff
        }
    }
}

但是这会比较,例如a[2]a[3],然后a[3]a[2]。鉴于您正在检查!=,这似乎很浪费。

更好的方法是将每个元素i数组的其余部分进行比较

for (int i = 0; i < a.length; i++) {
    for (int k = i + 1; k < a.length; k++) {
        if (a[i] != a[k]) {
            //do stuff
        }
    }
}

因此,如果您有指数[1 ... 5],那么比较将会进行

  1. 1 -> 2
  2. 1 -> 3
  3. 1 -> 4
  4. 1 -> 5
  5. 2 -> 3
  6. 2 -> 4
  7. 2 -> 5
  8. 3 -> 4
  9. 3 -> 5
  10. 4 -> 5
  11. 所以你看到对没有重复。想想一群人都需要互相握手。

答案 1 :(得分:1)

尝试这个或目的将解决较少的步骤

for (int i = 0; i < a.length - 1; i++) 
{
    for (int k = i+1; k < a.length - 1; k++) 
    {
        if (a[i] != a[k]) 
         {
            System.out.println(a[i]+"not the same with"+a[k]+"\n");
        }
    }
}

答案 2 :(得分:0)

for (int i = 0; i < a.length; i++) {
    for (int k = 0; k < a.length; k++) {
        if (a[i] != a[k]) {
            System.out.println(a[i] + " not the same with  " + a[k + 1] + "\n");
        }
    }
}

你可以从k = 1&amp;保持&#34; a.length-1&#34;在外部for循环中,为了减少两次比较,但这并没有产生任何显着差异。

答案 3 :(得分:-2)

试试下面的代码。此逻辑将有助于比较数组的元素。

    int[] arr= {1,7,22,55,22,6,6,7};
    
    for (int i = 0; i < arr.length; i++) {
        for (int j = i+1; j < arr.length; j++) {
            if(arr[i]==arr[j])
            {                   
                System.out.print(arr[i] + " ");
            }
        }
    }