Problème GUI Instruction IF

Résolu
alx781 Messages postés 3 Date d'inscription mercredi 28 avril 2010 Statut Membre Dernière intervention 28 mai 2012 - 28 mai 2012 à 15:35
cormandyr Messages postés 600 Date d'inscription samedi 20 mai 2006 Statut Membre Dernière intervention 8 juillet 2016 - 29 mai 2012 à 08:43
Bonjour,

J'ai besoin de votre aide pour une instruction IF dans laquelle je ne peux pas rentrer et je ne comprends absolument pas pourquoi.

Toute la construction de mon IHM se fait dans une classe Ma_Gestion_Bancaire.java, j'ai une classe Banque, Client, Compte etc.. le but étant de faire toutes les opérations ou du moins presque que propose une Banque.
Voici les attributs de la Banque : nom, ArrayList de Clients
Les attributs d'un Client sont : nom, prénom, adresse, code postal, ville et une hashtable de Compte.
Attributs d'un Compte : numéro, solde.

Donc j'ai cette page où j'aimerais afficher les informations d'un client en rentrant son nom, son prénom et son numéro de compte (dans des JTextField) et que si j'appuie sur le bouton rechercher il m'affiche toutes les informations du client (nom, prénom, adresse, ville, code postal, numéro de compte et solde du compte).

Voici une partie du code sur ce bouton :
Rechercher.addActionListener(new ActionListener ()
        {
        	public void actionPerformed(ActionEvent e)
        	{
        		String str_nom, str_prenom;	
        		int numerocompte;
        		Client recup_cl;
        		Compte recup_cp;
        		
        		str_nom = Search_Nom.getText().toUpperCase();	 //on met le nom entièrement en majuscule
        str_prenom = Search_Prenom.getText().substring(0, 1).toUpperCase() + Search_Prenom.getText().substring(1); //on met la première lettre du prénom en majuscule

        					
        recup_cl = Ma_Banque.getClient(str_nom, str_prenom); //on récupère le client
                        recup_cp = mon_client.getCompte(numerocompte);  


Voici maintenant le code de la fonction GetClient :
public Client getClient(String nom, String prenom)
 {
 Client caux = null;
 int i=0;
 int taille = clients.size();
 for(i=0;i<taille;i++)
 {
 System.out.println(clients.get(i).getNom() + " " + nom);
 System.out.println(clients.get(i).getPrenom() + " " + prenom);
 
 if((clients.get(i).getNom()==nom) && (clients.get(i).getPrenom()==prenom))
 {
 caux = clients.get(i);
 System.out.println(caux);
 }
 }
return caux;
 }

Le principe est simple, je souhaite comparé le contenu des JTextFields (qui sont le nom et le prénom) aux nom et prénom des Clients dans l'ArrayList de Clients que je parcours, pour cet exemple il y a un seul Client dans l'ArrayList dont les noms et prénoms sont respectivement X et Y.
Et donc quoi que je fasse il me renvoie un caux null, il ne rentre pas dans l'instruction IF alors que j'affiche juste avant le contenu des variables et ça me donne "X X" et "Y Y" elles sont donc identiques ça devrait donner TRUE dans mon IF non ?

Merci pour votre temps

Cordialement, Alex.

5 réponses

Utilisateur anonyme
28 mai 2012 à 17:27
Salut,

Tout d'abord tu dois revoir tes blocs () car certaines parenthèses ouvrent mais ne ferment pas.

Ensuite:
Avec == (boulean) tu compares les références pas les valeurs de tes String.

Il faut soit utiliser compareTo, soit equals.

Exemple avec equals:
         String StringTruc = "Truc"; 
         //String StringMachin = "Machin"; 
         String StringMachin = "Truc";
         if( (StringTruc).equals(StringMachin) ) { // si égual
            System.out.println("ÉGAL");
         }
      //Ou bien
         if( !(StringTruc).equals(StringMachin) ) { // si non égual
         
            System.out.println("DIFF.");
         }


Dans ton cas:
//if((clients.get(i).getNom()==nom) && (clients.get(i).getPrenom()==prenom)) { 
         if( (clients.get(i).getNom().equals(nom)) && (clients.get(i).getPrenom().equals(prenom)) )// si c'est equal
         {
         }
         if( !(clients.get(i).getNom().equals(nom)) && !(clients.get(i).getPrenom().equals(prenom)) )// si c'est non egual (!)
         {
         } 

Cordialement,

...\ Dan /...
3
Utilisateur anonyme
28 mai 2012 à 18:48
Re,
Dommage qu'on ne puisse pas éditer !
Bon erreur de ma part concernant les parenthèses; c'est ok...

Donc ne pas tenir compte de ma remarque.

Par contre je confirme le reste sous réserve de comparer le tout majuscule à un tout majuscle...


...\ Dan /...
0
alx781 Messages postés 3 Date d'inscription mercredi 28 avril 2010 Statut Membre Dernière intervention 28 mai 2012
28 mai 2012 à 19:14
Woua..

J'ai limite un peu honte de pas avoir penser à ça ^^", merci beaucoup pour ton aide ça a réglé le problème, j'devrais regarder plus souvent ce que Java met comme méthodes à notre disposition.
Après je ne pensais pas que comparer deux chaines de caractères via == était si différent de la méthode .equals(string) ^^

Cordialement, Alex.
0
Utilisateur anonyme
28 mai 2012 à 20:50
Il ne faut pas avoir honte quand c'est la 1ère fois...

Regarde quand même compareTo qui permet, en comparant 2 String, de savoir s'il y a égalité, < ou > (compareTo retourne <0 ou =0 ou >0).

Cordialement,


...\ Dan /...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cormandyr Messages postés 600 Date d'inscription samedi 20 mai 2006 Statut Membre Dernière intervention 8 juillet 2016 11
29 mai 2012 à 08:43
Salut,

Sinon tu ne veux pas tenir compte des majuscules/minuscules, tu peux aussi utiliser equalsIgnoreCase(...) ...
0
Rejoignez-nous