我正在尝试比较同一数组的元素。这意味着我想将 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");
}
}
}
原文由 no-Name-Is-Still-A-Name 发布,翻译遵循 CC BY-SA 4.0 许可协议
首先,您需要循环到
< a.length
而不是a.length - 1
。因为这严格小于您需要包含的上限。因此,要检查您可以执行的所有元素对:
但这将比较,例如
a[2]
到a[3]
然后a[3]
到a[2]
。鉴于您正在检查!=
这似乎很浪费。更好的方法是将每个元素
i
与数组的其余部分进行 比较:因此,如果您有索引 [1…5],则比较会进行
1 -> 2
1 -> 3
1 -> 4
1 -> 5
2 -> 3
2 -> 4
2 -> 5
3 -> 4
3 -> 5
4 -> 5
所以你看到对没有重复。想想一圈人都需要互相握手。