2009-03-31 7 views
0

comment comparer la valeur dans un tableau?Comment comparer une valeur dans un tableau?

J'ai une liste nommée tableau qui contient 12 éléments. Je vois si la valeur dans l'index 0 est égale ou non égale à la valeur dans l'index 2.

J'ai essayé ce code mais cela ne semble pas fonctionner.

if ((list.get(0)==list.get(2) && list.get(1)==list.get(3)) 
{ 
    System.out.println("equal") 
} 
+1

« il ne marche pas semble fonctionner » est pas un rapport de problème très bon :-) Vous devez donner plus de détails - que fait-il? Est-ce qu'il compile même? Est-ce que ça n'imprime pas "égal"? Etc, etc. – paxdiablo

+0

Gardez à l'esprit que == est différent de égal à (Objet) –

Répondre

2
if(list[0] == list[2] && list[1] == list[3]){ 
    System.out.println("equal"); 
} 

Si elles sont des chaînes:

if(list[0].equals(list[2]) && list[1].equals(list[3])){ 
    System.out.println("equal"); 
} 
8

Si c'est vraiment un tableau, vous voulez:

if (list[0] == list[2] && list[1] == list[3]) 

Notez que si le tableau est de types de référence, c'est par comparaient l'identité de référence plutôt que pour l'égalité. Vous pourriez vouloir:

if (list[0].equals(list[2])) && list[1].equals(list[3])) 

Bien que cela va alors bang si l'une des valeurs est nulle. Vous voudrez peut-être une méthode d'aide pour faire face à ceci:

public static objectsEqual(Object o1, Object o2) 
{ 
    if (o1 == o2) 
    { 
     return true; 
    } 
    if (o1 == null || o2 == null) 
    { 
     return false; 
    } 
    return o1.equals(o2); 
} 

Puis:

if (objectsEqual(list[0], list[2]) && objectsEqual(list[1], list[3])) 

Si vous avez vraiment un ArrayList au lieu d'un tableau, alors tous ce qui précède tient toujours, à l'aide list.get(x) au lieu de list[x] dans chaque endroit.

+0

Merci Jon. C'est vraiment utile. mais comment si au lieu de chercher l'égalité, je voulais vérifier si les éléments ne sont pas égaux? Puis-je utiliser if (! (objectsEqual (list [0], list [2]) && objectsEqual (list [1], list [3]))) – Jessy

0

Vous comparez des références d'objet, pas des objets eux-mêmes. Vous devez utiliser un appel de méthode. Toutes les classes héritent equals() de la classe racine Object, il pourrait fonctionner:

if(list.get(0).equals(list.get(2)) && list.get(1).equals(list.get(3))) 
{ 
    System.out.println("equal"); 
} 

This article semble être un bon résumé des autres méthodes de comparaison disponibles.

Questions connexes