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: