Problème d'affichage et de résolution
Résolu
ArmandAs_1998
Messages postés
16
Date d'inscription
Statut
Membre
Dernière intervention
-
ArmandAs_1998 Messages postés 16 Date d'inscription Statut Membre Dernière intervention -
ArmandAs_1998 Messages postés 16 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'ai un problème de résolution.
J'ai 2 classes: la première permet de représenter une personne (nom, prénom, ville) et la deuxième un compte en banque (titulaire, solde). La classe personne contient une méthode d'affichage d'une personne.
J'ai du mal à faire fonctionner mon programme qui consiste à afficher le titulaire d'un compte (dans la méthode affiche() --> ça donne Titulaire: Personne@6504e3b2 et Solde:50) et à savoir si 2 comptes ont un même titulaire. Je fais une résolution qui me paraît facile mais je ne sais pas où le problème se situe. Le voici. Merci.
L'autre classe est:
J'ai un problème de résolution.
J'ai 2 classes: la première permet de représenter une personne (nom, prénom, ville) et la deuxième un compte en banque (titulaire, solde). La classe personne contient une méthode d'affichage d'une personne.
J'ai du mal à faire fonctionner mon programme qui consiste à afficher le titulaire d'un compte (dans la méthode affiche() --> ça donne Titulaire: Personne@6504e3b2 et Solde:50) et à savoir si 2 comptes ont un même titulaire. Je fais une résolution qui me paraît facile mais je ne sais pas où le problème se situe. Le voici. Merci.
public class CompteBanque { Personne titulaire; void affiche(){ System.out.println("Titulaire: " +titulaire); System.out.println("Solde: " +solde); } boolean memeTitulaire(CompteBanque c) { return titulaire.equals(c.titulaire); } public static void main(String[]args) { Personne p1 = new Personne() ; CompteBanque c1 = new CompteBanque() ; c1.titulaire=p1 ; c1.solde = 50; Personne p2 = new Personne() ; CompteBanque c2 = new CompteBanque() ; c2.titulaire=p2 ; c1.affiche() System.out.println(c1.memeTitulaire(c2));
L'autre classe est:
public class Personne { String nom, prenom, ville; void aff(String s) { s = nom+" "+prenom; System.out.println(s); } public static void main(String[]args) { Personne p1 = new Personne (); p1.nom = "Durand"; p1.prenom = "David"; p1.ville = null; p1.aff(" "); Personne p2 = new Personne (); p2.nom = "Durand"; p2.prenom = "David"; p2.ville = null; p2.aff(" "); } }
A voir également:
- Problème d'affichage et de résolution
- Affichage double ecran - Guide
- Problème affichage fenêtre windows 10 - Guide
- Windows 11 affichage classique - Guide
- Problème affichage page internet google chrome - Forum Téléphones & tablettes Android
- Résolution native ✓ - Forum TV & Vidéo
2 réponses
Bonjour,
Lorsque tu affiches un objet, c'est la méthode toString() qui est appelée. Elle est définie dans la classe Object avec un comportement par défaut qui te donne "Personne@6504e3b2"
Pour obtenir un autre affichage il faut redéfinir la méthode toString() avec un comportement spécifique à ta classe, par exemple :
Lorsque tu affiches un objet, c'est la méthode toString() qui est appelée. Elle est définie dans la classe Object avec un comportement par défaut qui te donne "Personne@6504e3b2"
Pour obtenir un autre affichage il faut redéfinir la méthode toString() avec un comportement spécifique à ta classe, par exemple :
@Override public String toString(){ return nom + " " + prenom; }
Ça a marché pour l'affichage !... ça cloche juste maintenant juste au niveau de la méthode suivante pour savoir si 2 comptes appartiennent au même titulaire: je fais:
Mais ça ne marche pas je ne sais pas pourquoi ?
boolean memeTitulaire(CompteBanque c) { return titulaire.equals(c.titulaire); } public static void main(String[]args) { Personne p1 = new Personne(); CompteBanque c1 = new CompteBanque(); p1.nom = "Durand"; p1.prenom = "David"; c1.titulaire=p1; Personne p2 = new Personne(); CompteBanque c2 = new CompteBanque(); p2.nom = "Durand"; p2.prenom = "David"; c2.titulaire=p2; System.out.println(c1.memeTitulaire(c2));
Mais ça ne marche pas je ne sais pas pourquoi ?
C'est le même principe qu'avec la méthode toString. La méthode equals est définie dans la classe Object avec un comportement par défaut qu'il faut redéfinir avec un comportement spécifique à ta classe.
Alternative, mais en gardant en tête que ce n'est pas comme cela qu'on devrait faire :
@Override public boolean equals(Object obj) { Personne p = (Personne) obj; return nom.equals(p.nom) && prenom.equals(p.prenom); }
Alternative, mais en gardant en tête que ce n'est pas comme cela qu'on devrait faire :
boolean memeTitulaire(CompteBanque c) { return titulaire.nom.equals(c.titulaire.nom) && titulaire.prenom.equals(c.titulaire.prenom); }
La consigne c'est : "Créez deux classes : la première permet de représenter une personne (nom, prénom, ville) et la deuxième un compte en banque (titulaire, solde). La classe personne contient une méthode d'affichage d'une personne. Les opérations que l'on peut effectuer sur un compte sont les suivantes : déposer de l'argent, retirer de l'argent, transférer de l'argent vers un autre compte, afficher l'état du compte (titulaire et montant), savoir si le compte appartient au même titulaire qu'un compte donné (on suppose que toutes les instances de personnes sont différentes)".
Il n'y a donc pas d'autres moyens d'y arriver ?
Dans CompteBanque :