Problème avec constructeurs

Résolu/Fermé
Coraline - Modifié par NHenry le 12/03/2016 à 13:27
 Utilisateur anonyme - 12 mars 2016 à 14:11
Bonjour,

Je débute la programmation Java et je rencontre un problème que je n'arrive pas a résoudre. Je dois créer une classe Compte mais lorsque j'écris :

public class Compte {
  private static int numero;
  private static int solde;
  private static float debitMax;
 

  public static void main(String[] args) {
 Compte c1,c2;
 c1=new Compte(1,500,650);
 System.out.println("Le numero du premier compte est "+c1.numero);
 c2=new Compte(2,600,400);
 System.out.println("Le numero du premier compte est "+c1.numero);
        System.out.println("Le numero du deuxième compte est "+c2.numero);
 System.out.println("Le solde du compte "+c1.numero+" est "+c1.solde);
 System.out.println("Le solde du compte "+c2.numero+" est "+c2.solde);       
       }
 
  
  public Compte (int UnNumero, int SoldeInitial, float debitMaxi) //constructeur
  {
  numero = UnNumero;
  debitMax=debitMaxi;
  solde = SoldeInitial;
  } 
}


Le programme me renvoie :
Le numero du premier compte est 1
Le numero du premier compte est 0
Le numero du deuxième compte est 0
Le solde du compte 0 est 0
Le solde du compte 0 est 0

C'est comme si, dès que je crée un nous compte, il écrase l'ancien compte crée et lui donne sa valeur.

Je ne sais pas d'ou ça vient, merci pour votre aide.

EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI

Merci d'y penser dans tes prochains messages.

2 réponses

NHenry Messages postés 15192 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 18 février 2025 353
12 mars 2016 à 13:29
Comme tu utilises des "new", la bonne déclaration ne serait pas :
Compte* c1,c2;
pour commencer ?

Ensuite, si tu déclares tes membres d'objet en static c'est normal qu'ils soient commun à toutes tes instances ...
0
Utilisateur anonyme
12 mars 2016 à 13:38
non, pas de "*" on est pas en c !

Forum > Programmation > Java
0
NHenry Messages postés 15192 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 18 février 2025 353 > Utilisateur anonyme
12 mars 2016 à 13:57
Ok, j'ai mal interprété le langage, j'ai cru que c'était du C++ .... Je pars faire une sieste et je reviens :)
0
Utilisateur anonyme > NHenry Messages postés 15192 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 18 février 2025
12 mars 2016 à 14:11
ça arrive même aux meilleurs, quoique :/
0
Je ne comprend pas pourquoi il devrait y avoir Compte*..
Mais c'est le static qui me posait problème effectivement, merci !
0
Quand tu mets "static" ça crée une seule variable pour toutes tes instances, donc effectivement tu écrases les valeurs à chaque nouvel objet construit.


tu dois écrire "private int numero" au lieu de "private static int numero"


Le numero du premier compte est 1
Le numero du premier compte est 1
Le numero du deuxième compte est 2
Le solde du compte 1 est 500
Le solde du compte 2 est 600
0
Merci beaucoup ! Je me doutais que c’était une erreur bete comme ça..
0