Tout simple, mais ça ne marche pas

Tout simple, mais ça ne marche pas - Java - Programmation

Marsh Posté le 04-05-2009 à 11:51:13    

Bonjour à tous,
 
voilà, je suis étudiant et je travaille un peu sur du JAVA. Je commence donc un code tout bête ce matin et j'ai 2 choses, pourtant très simples qui ne fonctionnent pas.
Mon code dispose de 2 classes, une exam (main) et une compte qui pour le moment ne comporte qu'un constructeur et un accesseur.
Je ne trouve pas mes erreurs de syntaxe dans ces quelques lignes simplistes. Pouvez vous me dire ce qui cloche ? Merci d'avance :)

  • Je souhaite créer une classe compte ayant, pour chaque objet créé de cette classe, un numéro qui s'incrémente à chaque nouvelle instanciation (l'incrémentation de marche pas).
  • Je souhaite renvoyer le nom du titulaire à l'aide d'un accesseur (rien n'est renvoyé).


 
Dans le fichier exam.java :
 

Citation :

public class exam {
 public static void main(String[] args) {
   
 compte a = new compte();
 System.out.println(a.numCompte); // =0
 a.getNom(); //rien de s'imprime
 
 compte b = new compte();
 System.out.println(b.numCompte); // = 0 au lieu de 1 (après itération)
 b.getNom(); //rien ne s'imprime
   
 }
}


 
Dans le fichier compte.java :

Citation :

public class compte {
 public int numCompte = 0, compteur = 0;
 public String nom;
 
 public compte(){ //constructeur par défaut
  this.numCompte = compteur;
  compteur = compteur +1;
  this.nom = "Inconnu";
 }
 
 public String getNom(){
  return this.nom;
 }
}


 
Ce qui s'affiche à l'exécution :

Citation :

0
0


 
L'incrémentation ne marche pas, et l'accésseur getNom ne retourne rien...
Je ne trouve pas la solution, auriez vous des pistes à me suggérer pour corriger cela ?


---------------
Mieux vaut un tiens que deux tu l'auras
Reply

Marsh Posté le 04-05-2009 à 11:51:13   

Reply

Marsh Posté le 04-05-2009 à 11:56:17    

numCompte n'est pas statique. Autrement dit, à l'instanciation d'un objet compte, cet objet contient une variable numCompte indépendante des numCompte des autres objets de type Compte.
En mettant numCompte statique, la variable numCompte sera partagée par tous les objets de type Compte et donc tu devrais obtenir ce que tu veux en ce qui concerne l'incrémentation.
Pour b.getNom() qui n'affiche rien, si tu ne lui dis pas d'afficher, justement, ça me semble tout à fait normal [:dawa]


---------------
Soyons ouverts d'esprit, mais pas au point de laisser notre cerveau s'enfuir.
Reply

Marsh Posté le 04-05-2009 à 12:09:19    

Merci pour la correction, en effet, passer la numCompte en Static règle le problème (je venais de trouver à l'instant :) )
Et c'est vrai que je n'ai jamais demandé à imprimer avec getNom... je vais corriger l'accesseur avec :

Citation :

public void getNom(){
  System.out.println(this.nom);
 }


 
Ca marche beaucoup mieux !
Merci encore pour le coup de main :)


Message édité par wanou85 le 04-05-2009 à 12:10:16

---------------
Mieux vaut un tiens que deux tu l'auras
Reply

Marsh Posté le 04-05-2009 à 17:26:30    

nan, un getter doit retourner,  
 
tu dois donc faire System.out.println(b.getNom());

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed