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

avec Java Discussion :

Debutant la Methode equals ne marche pas ?


Sujet :

avec Java

  1. #1
    Membre du Club
    Inscrit en
    Août 2006
    Messages
    120
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 120
    Points : 68
    Points
    68
    Par défaut Debutant la Methode equals ne marche pas ?
    voici mon code je n'arrive pas à afficher voici ma classe main et les deux autres classes :
    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
    class Pgrm{
     
    public static void(String[] args){
    Polynomes p1 = new Polynomes();
    Polynomes p2 = new Polynomes();
     
    p1.polynomes = new Polynome[3];
    p2.polynomes = new Polynome[3];
     
    //initialisation + affectation valeurs
    		for (int i = 0; i < p1.length; i++) {
    			p1[i] = new Polynome();
    			p2[i] = new Polynome();
    			p1[i] = 2;
    			p2[i] = 2;
                   }
     
    		if ( p1.polynomes.equals(p2.polynomes) ) {
    			//ici on met le print 
    		}
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public class Polynomes {
    	Polynome[] polynomes;
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public class Polynome {
    	int coefficient;
    	int puissance;
    }
    Je ne comprends pas du tout

  2. #2
    Membre habitué Avatar de we.are.the.storm
    Profil pro
    Inscrit en
    Février 2009
    Messages
    115
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 115
    Points : 139
    Points
    139
    Par défaut
    Bonjour,

    As tu redéfini correctement la méthode equals de ta classe Polynome ?
    http://java.developpez.com/faq/java/...#DIVERS_equals

  3. #3
    Membre du Club
    Inscrit en
    Août 2006
    Messages
    120
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 120
    Points : 68
    Points
    68
    Par défaut
    Citation Envoyé par we.are.the.storm Voir le message
    Bonjour,

    As tu redéfini correctement la méthode equals de ta classe Polynome ?
    http://java.developpez.com/faq/java/...#DIVERS_equals
    non pas du tout mais normalement ça devrait marcher ?

  4. #4
    Membre habitué Avatar de we.are.the.storm
    Profil pro
    Inscrit en
    Février 2009
    Messages
    115
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 115
    Points : 139
    Points
    139
    Par défaut
    Non, il faut redéfinir la méthode equals sinon ça ne fonctionnera pas (et hashCode au passage pour rester propre).

  5. #5
    Membre éprouvé Avatar de Jidefix
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    742
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Septembre 2006
    Messages : 742
    Points : 1 154
    Points
    1 154
    Par défaut
    Bonjour,
    alors tout d'abord moi je dis que ton code ne compile pas aux lignes suivantes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public static void(String[] args){
    car il manque le nom "main"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    for (int i = 0; i < p1.length; i++) {
    			p1[i] = new Polynome();
    			p2[i] = new Polynome();
    			p1[i] = 2;
    			p2[i] = 2;
                   }
    plantera sur chaque ligne car p1 et p2 ne sont pas des tableaux et n'ont donc pas d'attribut "length" ni de case [i]. Je pense que tu voulais dire: p1.polynomes et p2.polynomes à chaque fois.
    Enfin
    n'a pas de sens, tu n'est pas en train de manier des entiers mais des objets Polynomes.



    Tu as un probleme de conception:
    En faisant ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    p1.polynomes.equals(p2.polynomes)
    tu compares deux tableaux, qui ont été initialisés séparément:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    p1.polynomes = new Polynome[3];
    p2.polynomes = new Polynome[3];
    Pour rappel, quand tu compares deux tableaux, tu compares leurs références et non pas leur contenu

    Tes deux tableaux sont différents, la fonction equals renvoie donc "false".

    Je pense que ce que tu voulais faire était comparer les deux Polynomes n'est ce pas?

    Si c'est le cas, il faut appliquer la fonction equals sur p1 et P2 directement:
    Et redéfinir dans la classe Polynomes la fonction equals (comme indiqué précédemment).
    Veuillez agréer nos sentiments les plus distingués. Soyez assurés de notre entière collaboration, bien à vous pour toujours et à jamais dans l'unique but de servir l'espérance de votre satisfaction, dis bonjour à ton père et à ta mère, bonne pétanque, mets ton écharpe fais froid dehors.

  6. #6
    Membre du Club
    Inscrit en
    Août 2006
    Messages
    120
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 120
    Points : 68
    Points
    68
    Par défaut
    Citation Envoyé par Jidefix Voir le message
    Pour rappel, quand tu compares deux tableaux, tu compares leurs références et non pas leur contenu

    Tes deux tableaux sont différents, la fonction equals renvoie donc "false".

    Je pense que ce que tu voulais faire était comparer les deux Polynomes n'est ce pas?

    Si c'est le cas, il faut appliquer la fonction equals sur p1 et P2 directement:
    Et redéfinir dans la classe Polynomes la fonction equals (comme indiqué précédemment).
    Oui c'est cela je veux comparer deux polynomes, mais je ne sais pas redéfinir la casse equals car je ne sais pas comment faire.

    sachant que 3x^3 + 5x^3 donnera 8x^3

  7. #7
    Membre éclairé 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
    Points : 718
    Points
    718
    Par défaut
    En passant, le nom des classes a son importance pour avoir les idées claires.
    J'ai l'impression que ce que tu nommes Polynome est en réalité un Monome et Polynomes un Polynome.

    Voila un exemple un peu crade de surcharge de equals et hashcode:

    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
    public class Polynome {
    int coefficient;
    int puissance;
     
    public boolean equals(Polynome p) {
    if(p instanceof Polynome) {
    return this.coefficient == p.coefficient && this.puissance == p.puissance;
    }
    return false;
    }
     
    public int hashcode() {
    return (coefficient+"x"+puissance).hashcode();
    }
     
    }
    je suppose que la hashcode() ci-dessus est optimisable.

  8. #8
    Membre chevronné
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Points : 2 197
    Points
    2 197

Discussions similaires

  1. Réponses: 5
    Dernier message: 18/11/2010, 09h50
  2. Problème de format, equals ne marche pas !
    Par Nadd dans le forum Entrée/Sortie
    Réponses: 3
    Dernier message: 20/11/2008, 12h00
  3. appel d'une methode qui ne marche pas
    Par hansaplast dans le forum C++
    Réponses: 4
    Dernier message: 27/04/2006, 13h52
  4. Réponses: 4
    Dernier message: 30/04/2004, 13h14
  5. [Debutant] Sdl & OpenGl link ne marche pas
    Par Riko dans le forum OpenGL
    Réponses: 9
    Dernier message: 18/02/2004, 16h13

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