no-*_*ame 4 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");
}
}
}
Run Code Online (Sandbox Code Playgroud)
Bor*_*der 37
首先,你需要循环< 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
}
}
}
Run Code Online (Sandbox Code Playgroud)
但是,这会比较,例如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
}
}
}
Run Code Online (Sandbox Code Playgroud)
因此,如果你有指数[1 ... 5],那么比较就会进行
1 -> 2 1 -> 3 1 -> 4 1 -> 5 2 -> 3 2 -> 4 2 -> 5 3 -> 4 3 -> 54 -> 5所以你看到对不会重复.想想一群人都需要互相握手.