Partage
  • Partager sur Facebook
  • Partager sur Twitter

constructeur

    8 avril 2011 à 0:04:00

    Bonsoir, je commence les classes sur un petit programme tout simple,
    j'ai une erreur à la compilation dans la boucle for "cannot find symbol
    variable nom et variable Montan",c'est des variables d'instances de la classe Client, il les connait! :(
    Si quequ'un a une petite idée ou explication,Merci

    import java.util.Scanner;
    class Client{
    	String nom;
    	double Montant;
    	Client(String nom,double Montant){
    		this.nom=nom;
    		this.Montant=Montant;
    	}
    	void afficherClientMontant(){
    		Terminal.ecrireStringln("nom du client: " + this.nom);
    		Terminal.ecrireString(" le montant : "  + this.Montant);
    	}
    }					
    public class Essai_1Bis{
    	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
      8 avril 2011 à 0:42:36

      Essaie d'enlever le public devant Essai_1Bis. Ensuite ta variable Terminal c'est quoi ?
      • Partager sur Facebook
      • Partager sur Twitter
        8 avril 2011 à 14:08:32

        Citation : artemis01

        Bonsoir, je commence les classes sur un petit programme tout simple,
        j'ai une erreur à la compilation dans la boucle for "cannot find symbol
        variable nom et variable Montan",c'est des variables d'instances de la classe Client, il les connait! :(
        Si quequ'un a une petite idée ou explication,Merci

        import java.util.Scanner;
        class Client{
        	String nom;
        	double Montant;
        	Client(String nom,double Montant){
        		this.nom=nom;
        		this.Montant=Montant;
        	}
        	void afficherClientMontant(){
        		Terminal.ecrireStringln("nom du client: " + this.nom);
        		Terminal.ecrireString(" le montant : "  + this.Montant);
        	}
        }					
        public class Essai_1Bis{
        	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");
        	}
        }
        


        Bonjour,

        Le problème vient d'ici :

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


        Ici, nom et Montant ne sont pas des variables de classes, mais seulement des variables, qui doivent être crées (et initialisées) comme tout autre objet java.

        Pour regler ton problème, tu as deux posibilité (une plus propre que l'autre) :


        • - Creer un constructeur Client qui ne prend aucun paramètre, où tu ilitialiera tes variables nom et client à des variavles par défaut (style "" por nom et 0 pour Montant)
          Client(){
          		this.nom="";
          		this.Montant=0;
          	}
          
          ............
          
          for (int i=0;i<tabClient.length;i++){
          			tabClient[i]=new Client();
          			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();;
          		}
          

        • - L'autre méthode, un peu plus sale, est de ne pas toucher à ton contructeur, mais d'instancier ton tabClient[i] . Ceci donnerait :
          for (int i=0;i<tabClient.length;i++){
          			tabClient[i]=new Client("", 0);
          			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();;
          		}
          
        • Partager sur Facebook
        • Partager sur Twitter

        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