Forum Clubic

Probleme de variable

Bonjour à tous !
Je suis confronté à un problème plutôt gênant avec Java… Tout d’abord , je développe avec Eclipse (helios) une application de gestion de compte bancaire. Dans mon code j’ai ma classe teste comme ceci :

package Cpte;

import java.util.Date;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Scanner; 

public class testType {

	public static void main(String[] args) throws ParseException {
	Banque b = new Banque(); //création d'une banque
		
	b.NouveauType("ch", 0);	//création des types de mouvement, ici cheque
        b.NouveauType("pre", 0); //prélevement
        b.NouveauType("rdi", -1); //retrait distributeur
        b.NouveauType("ret", -1); //retrait en guichet
        b.NouveauType("vir", 0); //virement
        b.NouveauType("dch", 4); //depot de cheque
        b.NouveauType("des", 0); //dépôt d'éspece
        
        Date d = new SimpleDateFormat("dd/MM/yyyy").parse("12/01/2012"); //force la date choisie à êtresous la forme Date de java
        b.NouveauCompte(12345, "Pipo","Jean", 0, -5000, d); //création d'un nouveau compte
        
        Scanner saisieUtilisateur = new Scanner(System.in); //effectuer un mouvement pour le comtpe voulu
        System.out.println("Veuillez saisir un numéro de compte: ");
        int ent = 1245;
        while(b.RendCompte(ent) == null)
        { 
        	System.out.println("Ce compte n'existe pas");
        	System.out.println("Veuillez saisir un numéro de compte: ");
            ent = 1245;
        }
        System.out.println("Montant du mouvement?  ");
        double rep = 100;
        while ((b.RendCompte(ent).getSolde()+rep) < b.RendCompte(ent).getDecouvert())
        {
        	System.out.println("Erreur le solde est insuffisant par rapport au découvert autorisé");
        	System.out.println("Pour rappel votre Solde est de: " + b.RendCompte(ent).getSolde() + "  Découvert Autorisé : " + b.RendCompte(ent).getDecouvert() + "  Somme possible à débiter : " + (-(b.RendCompte(ent).getDecouvert()) + (b.RendCompte(ent).getSolde())));
        	System.out.println("Montant du mouvement?  ");
            rep = saisieUtilisateur.nextDouble();
        }
        System.out.println("Type de mouvement?");
       	String rep2 = saisieUtilisateur.next();
        System.out.println(b.getTypeLib(rep2));
	}

}

Mon problème est au niveau de la fin avec ma variable “rep2”. Je rentre mon type de mouvement par exemple “ch” et quand il rentre dans la fonction getTypeLib le System.out.println me renvoi un “null” alors que si je mets le type de mouvement en dur comme ci-dessous cela fonctionne…

System.out.println("Type de mouvement?");
       	// String rep2 = saisieUtilisateur.next();
        System.out.println(b.getTypeLib("ch")); 

Donc je ne comprends pas pourquoi en dur ça marche alors que ma variable contient la même chose… Voici la fonction getTypeLib:

package Cpte;

import java.text.ParseException;
import java.util.Vector;
import java.util.Date;

public class Banque {
	private Vector <Compte> MesComptes;
	private Vector <Type> MesTypes;
	
	public Banque()
	{
		MesComptes = new Vector <Compte>();
		MesTypes = new Vector <Type>();
	}

public Type getTypeLib(String UnLibelle)
     {
         for (int i = 0; i < MesTypes.size(); i++)
         {
             if (getTypeInd(i).getCode() == UnLibelle)
             {
                 return (getTypeInd(i));
             }
         }
         return (null);
     }

public Type getTypeInd(int UnIndice)
     {
         return ((Type)MesTypes.elementAt(UnIndice));
     }

Un type ne contient qu’un code au format String (par exemple: “ch”) et un nombre de jour en int. Merci d’avance pour votre aide !
Edité le 17/04/2012 à 22:42

Bienvenue en Java :slight_smile:

En Java, l’opérateur == ne peut pas être surchargé, et donc “foobar” == new String(“foobar”) renverra toujours faux car “foobar” est une instance (disons #1) et new String(“foobar”) une autre (disons #2).

Tu peux en revanche utiliser la méthode equals(Object), prévu à cet effet :

"foobar".equals(new String("foobar")); // renvoie vrai

Merci beaucoup ! ça marche beaucoup mieux maintenant :slight_smile: