我正在尝试比较同一数组的元素。这意味着我想将 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");
}
}
}
最佳答案
首先,您需要循环到 < 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 -> 2
-
1 -> 3
-
1 -> 4
-
1 -> 5
-
2 -> 3
-
2 -> 4
-
2 -> 5
-
3 -> 4
-
3 -> 5
-
4 -> 5
所以你看到对没有重复。想一想一群人都需要彼此握手。
关于java - 比较java中同一个数组的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23460367/