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 Méthode d'instance compare()


Sujet :

Langage Java

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 12
    Par défaut Problème Méthode d'instance compare()
    Bonjour,

    en fait j'essaye de faire un exo et je bloque voila mon énoncé :

    Dans la classe Livre écrivez une méthode d'instance compare pour comparer 2 livres sur leur nombre de pages.
    compare prend un livre en paramètre et elle renvoie 0 si le livre a le même nombre de pages que l'instance qui reçoit le message, 1 si l'instance courante ("this") a plus de pages que le parametre et -1 sinon.

    Pour tester, vous utiliserez un code semblable au suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    System.out.print("L'auteur du plus gros livre est ");    
    String auteurPlusGrosLivre; 
    // Le code pour trouver le livre qui a le plus de pages (entre 2 livres)
    // Ecrivez 2 versions : une avec if et l'autre avec switch
    . . . 
    System.out.println(auteurPlusGrosLivre);

    Et voila le code de ma méthode :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public void compare(Object l) {
        if (this.nbPages == nbPages) {
            System.out.println("0");
        } else if (this.nbPages > nbPages) {
            System.out.println("1");
        } else {
            System.out.println("-1");
        }
     }
    Je n'ai pas d'erreur à la compilation mais quand j'exécute il renvoie toujours 0, alors qu'il ne devrait pas dans certains cas.

    Merci de m'aider je bloque depuis un moment je ne sais pas comment faire.

  2. #2
    Membre émérite
    Inscrit en
    Mars 2006
    Messages
    848
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mars 2006
    Messages : 848
    Par défaut
    Bonjour,

    c'est normal car tu compares le même champ, donc tu as toujours une égalité.

    Ta méthode compare doit prendre un livre en paramètre et ensuite tu compareras param.nbPages à this.nbPages.

    Au passage, ta méthode compare est censée renvoyer -1/0/1 et non pas l'afficher.

  3. #3
    Membre chevronné
    Inscrit en
    Juillet 2006
    Messages
    534
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 534
    Par défaut
    Comme Deaf a dit il faut modifier ton code au lieu de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    this.nbPages OP nbPages
    Faire ceci si tu n'as pas mis de getter
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    this.nbPages OP l.nbPages
    Ou avec getter
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    this.nbPages OP l.getNbPages()

    Ou OP est une des operation de comparaison
    ==, > ou <

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    338
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2008
    Messages : 338
    Par défaut
    Ta classe devrai être comme suit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public class Livre {
     int nbPages;
     //....autres champs et constructeurs
     public int compare(Livre l) {
        if(nbPages < l.nbPages)
            return -1;
        if(nbPages > l.nbPages)
            return 1;
        return 0;
     }
    }
    A++

  5. #5
    Membre émérite Avatar de Heimdal
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    549
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 549
    Par défaut
    Je rajouterai juste un cas au début de la méthode si l est null.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 12
    Par défaut
    Merci à tous pour vos réponses j'ai réussi à compiler et à exécuter ma méthode et elle marche parfaitement.

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

Discussions similaires

  1. Problème méthode Imaging.GetListItems
    Par kince dans le forum SharePoint
    Réponses: 6
    Dernier message: 01/06/2007, 20h27
  2. VBA-E Problème méthode .find
    Par popo68 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 03/01/2007, 10h14
  3. [EJB2.1 Entity] Problème méthode findAll() avec Jonas 4.7.4
    Par mixouille dans le forum Java EE
    Réponses: 1
    Dernier message: 28/07/2006, 12h06
  4. Problème méthode NUM
    Par Pfeffer dans le forum 4D
    Réponses: 2
    Dernier message: 10/07/2006, 09h17

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