Partage
  • Partager sur Facebook
  • Partager sur Twitter

probleme avec un constructeur

Sujet résolu
    8 avril 2011 à 23:15:16

    Bonsoir,
    j'ai un petit probleme de compilation( je debute dans les class et les constructeur), il me met "cannot find symbol nom et Montant" avec ça :

    tabClient[i]=new Client(nom,Montant);
    


    nom et Montant viennent du constructeur, il les connait non? :(
    Merci

    import java.util.Scanner;
    class Client{
    	String nom;
    	double Montant;
    	Client(String nom,double Montant){
    		this.nom=nom;
    		this.Montant=Montant;
    	}
    	void afficherClientMontant(){
    		System.out.print("nom du client: " + this.nom);
    		System.out.print(" le montant : "  + this.Montant);
    	}
    }
    public class Module2_Cours1Bis{
    	public static void main(String[]args){
    		Scanner sc = new Scanner(System.in); 
    		Client[]tabClient=new Client[5];
    		for (int i=0;i<tabClient.length;i++){
    			tabClient[i]=new Client(nom,Montant);
    			System.out.print("saisir nom  Client" +( i+1) + " : ");
    			tabClient[i].nom=sc.nextLine();
    			System.out.print("saisir Montant de " +( i+1) + " : ");
    			tabClient[i].Montant=sc.nextDouble();
    			sc.nextLine();;
    		}
    		int som=0;
    		int somSup=0;
    		for (int i=0;i<tabClient.length;i++){
    			som+=tabClient[i].Montant;
    			if(tabClient[i].Montant>=100)
    				somSup++;
    		}
    		System.out.println("la somme globale vaut :" + som);
    		System.out.println("il y a " + somSup + "sup a 100 euros");
    	}
    }
    
    • Partager sur Facebook
    • Partager sur Twitter
      9 avril 2011 à 0:03:54

      nom et montant on été encapsulés dans la classe Client.
      Alors que toi tu essaie de les avoir dans la classe CoursBis. c'est normal que ça ne marche pas.

      Il faut aussi crée un constructeur vide dans ta classe Client, et c'est ce constructeur que tu va utiliser dans ta classe CoursBis qui te permettrai de crée un client sans nom et sans montant.
      • Partager sur Facebook
      • Partager sur Twitter
      J'ai tous les badges d'OpenClassrooms.
        9 avril 2011 à 0:25:02

        Même si les 2 variables viennent d'une autre classe je peux les appeler dans le main,je pense, si je supprime le constructeur et que j'ecris
        tabClient[i]=new Client();
        
        ça marche, j'utilise le constructeur par defaut,ce qui revient à ce que tu me dit de faire : un constructeur vide.
        le constructeur ne sert pas à grand chose pour l'exemple que j'ai pris !
        Merci pour la réponse
        • Partager sur Facebook
        • Partager sur Twitter
          9 avril 2011 à 0:34:19

          Sérieux, ne me dit pas qu'il ont déjà intégré ça, j'étais pas au courant.
          Au début des releases du jdk 1.6 le constructeur par defaut était indisponible dès que tu avait déjà un constructeur normal. peut-etre qu'ils on changé ça.

          Si c'est bien le cas, il faut juste créer le clint comme tu viens de le faire sans paramètre et ça ira.

          Mais si les deux variables viennent d'une autre classe et qu'elle ne sont pas statiques, tu es obligé de créer une instance de ta classe pour y avoir accès
          • Partager sur Facebook
          • Partager sur Twitter
          J'ai tous les badges d'OpenClassrooms.

          probleme avec un constructeur

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown