IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

Problème de comparaison?


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Goupo
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2006
    Messages
    505
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2006
    Messages : 505
    Par défaut Problème de comparaison?
    Salut à tous,

    Bon encore un soucis.

    Tout d'abord, le code.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public class Objet extends Element
    {
    	public Objet (String nom, String description)
    	{
    		super(nom, description);
    	}
     
    	public String getNom()
    	{
    		return super.nom;
    	}
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    import java.util.ArrayList;
     
    public class Joueur {
     
    	private String nom;
    	private ArrayList sac;
     
    	/**
             * Constructeur
             *
             */
    	public Joueur(String nom)
    	{
    		this.nom = nom;
    		this.sac = new ArrayList();
    	}
     
    	/**
             * Ajoute un objet dans le sac du joueur
             * @param unObjet
             */
    	public void ajouteObjet(Objet unObjet)
    	{
    		this.sac.add(unObjet);
    	}
     
    	/**
             * Renvoie une chaine descriptive du contenu du sac
             * @return
             */
    	public String getSacString()
    	{
    		Objet objetCourant;
    		String chaineRetour = "Dans votre sac,\nIl y a:";
    		if (this.sac.size() != 0)
    		{
    			for (int i = 0; i < this.sac.size(); i++)
    			{
    				objetCourant = (Objet) this.sac.get(i);
    				chaineRetour += "\n     + " + objetCourant.getNom();
    			}
    		}
    		else
    		{
    			chaineRetour = "Votre sac est vide";
    		}
    		return chaineRetour;
     
    	}
     
    	/**
             * Donne l'objet demandé
             * @param nomObjet
             * @return
             */
    	public Objet getObjet(String nomObjet)
    	{
    		//Regarder les objets dans le sac
        	for (int i = 0; i < this.sac.size(); i++)
        	{
        		Objet unObjet = (Objet) this.sac.get(i);
        		//Si l'objet est celui demandé alors le donner
        		System.out.println(unObjet.getNom() + " " + nomObjet);
        		if (nomObjet.equals(unObjet.getNom()));
        			{
        			return unObjet;
        			}
        	}
        	return null;
    	}
    }
    Pourquoi lorsque je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    System.out.println(Joueur.getSacString());
    J'obtiens
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Dans votre sac,
    Il y a:
         + gants
         + diamant
    Mais que lorsque je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Objet unObjet = Joueur.getObjet("diamant");
    System.out.println(unObjet.getNom());
    System.out.println(unObjet.getDescription());
    J'obtiens
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    gants
    gants: une paire de gants
    Je pense que le problème est au niveau de Joueur::getObjet(Objet).

    Qui voit quelque chose qui cloche?

    Merci.

  2. #2
    Membre éclairé Avatar de je®ome
    Inscrit en
    Octobre 2005
    Messages
    285
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 285
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    for (int i = 0; i < this.sac.size(); i++)
        	{
        		Objet unObjet = (Objet) this.sac.get(i);
        		//Si l'objet est celui demandé alors le donner
        		System.out.println(unObjet.getNom() + " " + nomObjet);
        		if (nomObjet.equals(unObjet.getNom())) //enlever le ;
        			{
        			return unObjet;
        			}
        	}
        	return null;
    	}
    sinon, le bloc derrière sera toujours pris en compte.

    a+

  3. #3
    Membre éclairé
    Inscrit en
    Février 2007
    Messages
    406
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 406
    Par défaut
    j'ai pas lu tous le code mais je pense que ça vient du super de getNom(les parentheses):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public String getNom()
    	{
    		return super().nom;
    	}
    tu as un probleme dans getObjet car tu appelle getNom ,c'est peut etre ca.
    a+

  4. #4
    Membre éclairé Avatar de je®ome
    Inscrit en
    Octobre 2005
    Messages
    285
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 285
    Par défaut
    super() est une méthode qui appelle le constructeur de la classe mère.
    Je ne suis pas sûr qu'on peut l'utiliser de la sorte.
    super() renvoi-t-elle l'objet mère en question ?? Je n'en suis pas sûr.
    Mais au cas où, étant une méthode, c'est bien appellé de la forme super() .

  5. #5
    Membre éclairé
    Inscrit en
    Février 2007
    Messages
    406
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 406
    Par défaut
    en effet t'as raison jerome je vien de faire la verification , je fait tjrs la confusion!
    donc je rectifie:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public String getNom()
    	{
    		return super.nom;
    	}
    désolé!
    a+

  6. #6
    Membre éclairé Avatar de je®ome
    Inscrit en
    Octobre 2005
    Messages
    285
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 285
    Par défaut
    Je me suis peut-être mal expliqué, à vous d'en juger, mais je pense que si
    super() renvoi l'objet mère, alors un attribut de cette objet mère est appellé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public String getNom()
    	{
    		return super().nom;
    	}

  7. #7
    Membre éclairé Avatar de Goupo
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2006
    Messages
    505
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2006
    Messages : 505
    Par défaut
    Ah le *on!
    Merci !

    Sinon pour super, chez moi, ça marche très bien comme ça.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public String getNom()
    	{
    		return super.nom;
    	}
    Et ça marche pas si je mets les paranthèses comme si super était une fonction qui renvoyait la mère.

  8. #8
    Membre chevronné Avatar de Rayndell
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    289
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 289
    Par défaut
    Je vois pas trop la différence enre ton code modifié et ton code de départ...

  9. #9
    Membre éclairé
    Inscrit en
    Février 2007
    Messages
    406
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 406
    Par défaut
    salut,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if (nomObjet.equals(unObjet.getNom())) //enlever le ;
        			{
        			return unObjet;
        			}
    Goupo a placé aprés le if un point virgule, ce qui rend l'instruction return inaccessible, il faut donc enlever le ;.
    a+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 23/03/2006, 12h39
  2. Réponses: 11
    Dernier message: 22/03/2006, 21h57
  3. problème de comparaison table dans requète.
    Par Sendo dans le forum Access
    Réponses: 8
    Dernier message: 09/03/2006, 11h10
  4. Problème de comparaison (chez lycos)
    Par Tuscelan dans le forum Langage
    Réponses: 4
    Dernier message: 10/11/2005, 18h13
  5. Problème de comparaison de dates
    Par MiJack dans le forum Langage SQL
    Réponses: 2
    Dernier message: 12/03/2004, 21h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo