J'essaie de comparer des éléments du même tableau. Cela signifie que je veux comparer l'élément 0 avec tous les autres éléments, l'élément 1 avec tous les autres éléments et ainsi de suite. Le problème est qu'il ne fonctionne pas comme prévu. . Ce que je fais, c'est que j'en ai deux pour les boucles qui vont de 0 à array.length-1 .. Alors j'ai une instruction if qui va comme suit: 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");
}
}
}
Tout d'abord, vous devez faire une boucle vers < a.length
plutôt que a.length - 1
. Comme cela est strictement inférieur à ce que vous devez inclure la limite supérieure.
Donc, pour vérifier toutes les paires d'éléments que vous pouvez faire:
for (int i = 0; i < a.length; i++) {
for (int k = 0; k < a.length; k++) {
if (a[i] != a[k]) {
//do stuff
}
}
}
Mais cela va comparer, par exemple a[2]
à a[3]
puis a[3]
à a[2]
. Étant donné que vous vérifiez !=
cela semble inutile.
Une meilleure approche serait de comparer chaque élément i
au reste du tablea:
for (int i = 0; i < a.length; i++) {
for (int k = i + 1; k < a.length; k++) {
if (a[i] != a[k]) {
//do stuff
}
}
}
Donc, si vous avez les indices [1 ... 5] la comparaison irait
1 -> 2
1 -> 3
1 -> 4
1 -> 5
2 -> 3
2 -> 4
2 -> 5
3 -> 4
3 -> 5
4 -> 5
Vous voyez donc que les paires ne sont pas répétées. Pensez à un cercle de personnes qui ont toutes besoin de se serrer la main.
Essayez ceci ou le but résoudra avec moins d'étapes
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");
}
}
}
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");
}
}
}
Vous pouvez commencer à partir de k = 1 et garder "a.length-1" dans la boucle for externe, afin de réduire deux comparaisons, mais cela ne fait aucune différence significative.