在java中比较同一数组的元素

问题描述 投票:0回答:5

我正在尝试比较同一数组的元素。这意味着我想将 0 元素与其他所有元素进行比较,将 1 元素与其他所有元素进行比较,依此类推。问题是它没有按预期工作。 。我所做的是我有两个从 0 到 array.length-1 的 for 循环。然后我有一个 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");
        }
    }
}
java arrays compare element between
5个回答
55
投票

首先,您需要循环到

< 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

所以你会看到配对没有重复。想象一圈人都需要互相握手。


1
投票

试试这个,否则用更少的步骤就能解决问题

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

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 开始并在外层 for 循环中保留“a.length-1”,以减少两次比较,但这不会产生任何显着差异。


0
投票

如何将 a[i] 的值与 [a+1]、a[a-1] 以及 botton 索引的值(相关 k)进行比较? 找出当前索引的值是否小于其所有其他索引的值

for (int i = 0; i < a.length; i++) {
    for (int k = 0; k < a.length; k++) {
        if (a[i] < a[i+1]) && (a[i] < a[i-1]) )  {
            int b = a[i]
        }
    }
}    
   for (int i = 0; i < a.length; i++) {
    for (int k = 0; k < a.length; k++) {
        if (a[k] < a[k+1]) && (a[k] < a[k-1]) )  {
            int c = a[k]
        }
    }
}      

-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] + " ");
            }
        }
    }
© www.soinside.com 2019 - 2024. All rights reserved.