Egalite non juste
Sofi
-
KX Messages postés 19031 Statut Modérateur -
KX Messages postés 19031 Statut Modérateur -
Bonjour,
J'ai un bug depuis hier non compréhensible.J'ai tester 2 entier qui sont normalement égaux mais toujours la résultat de l'égalité est false.
voilà le code :
Et ici je fais l'appelle de ce code
et le résultat affiché est le suivant:
2298 //premier entier saisie
2298// l'entier dans la requête
+++++++++false // résultat d'égalité entre 2 entier
false
J'ai un bug depuis hier non compréhensible.J'ai tester 2 entier qui sont normalement égaux mais toujours la résultat de l'égalité est false.
voilà le code :
public boolean verifierCode(Integer code) throws SQLException
{
//boolean verif = false ;
ResultSet res=db.execute("select * from compte");
boolean verif=false;
while( res.next() && verif==false )
{
Object cd=res.getObject("code");
System.out.println("+++++++++"+(cd.equals(code)));
if((cd)==(code))
return verif=true;
break;
}
return verif;
}
Et ici je fais l'appelle de ce code
Integer code=Integer.parseInt(text_1.getText()); System.out.println(code); int nbessai=0; System.out.println(c.verifierCode(code));
et le résultat affiché est le suivant:
2298 //premier entier saisie
2298// l'entier dans la requête
+++++++++false // résultat d'égalité entre 2 entier
false
1 réponse
Lorsque tu fais Object cd=res.getObject("code"); rien ne garantit apriori que cd soit un Integer.
Il serait intéressant d'afficher le type de cd : System.out.println(cd.getClass().getName());
Ensuite tu fais if((cd)==(code)) autant dire que là il n'y a aucune chance que cela fonctionne, car l'opérateur == compare les objets, pas leurs valeurs !
Il serait intéressant d'afficher le type de cd : System.out.println(cd.getClass().getName());
Ensuite tu fais if((cd)==(code)) autant dire que là il n'y a aucune chance que cela fonctionne, car l'opérateur == compare les objets, pas leurs valeurs !