IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

avec Java Discussion :

probleme avec les methodes dans une class


Sujet :

avec Java

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 36
    Points : 28
    Points
    28
    Par défaut probleme avec les methodes dans une class
    Bonsoir,
    j'ai 2 methodes qui ne compilent pas "cannot find symbol methode
    creationTabMoyDesEleves(tabEleve);
    afficherTabMoyDesEleves(tabMoyEleves);

    J'ai crée une class Elève avec un nom et un tableau de 3 notes, et j'essaye d' afficher les moyennes de tous les élèves, pour cela je crée un tableau qui va recueillir toutes les moyennes, je pense que c'est ici que ça ne va pas, ce que j'ai fait me semble logique mais comme je débute en prog objet, je ne suis pas trop sûr
    voilà ce que j'ai fait,
    merci d'avance pour votre aide

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
     
    import java.util.Scanner;
    class Eleve{
    	Scanner sc = new Scanner(System.in); 
    	String Nom;
    	double []Notes;
     
    	Eleve(){  //constructeur 
    	System.out.print("Nom de l'élève : ");
    	this.Nom=sc.nextLine();
    	this.Notes=new double[3];
    	System.out.print("Note en Maths /60 : ");
    	this.Notes[0]=sc.nextDouble();
    	System.out.print("Note en Informatique /80 : ");
    	this.Notes[1]=sc.nextDouble();
    	System.out.print("Note en Français /40 : ");
    	this.Notes[2]=sc.nextDouble();
     
    	}
    	double calculMoyEleve(){ // moy de l'élève OK ça marche
    		double somme=0;
    		for(int i=0;i<this.Notes.length;i++)
    			somme = somme + this.Notes[i];
    		return (somme/9);
    	}		
    	void afficherMoyEleve(){ //OK ça marche
    		System.out.print("nom de l'élève: " + this.Nom);
    		System.out.print("Sa moyenne sur 20 est de :" + this.calculMoyEleve());
    	}
    	double [] creationTabMoyDesEleves(Eleve []tabEleve){ // tableau receillant les moyennes des élèves, une erreur?
    		double []tabMoyEleves=new double[2];
    		for(int i=0;i<tabEleve.length;i++){
    			tabMoyEleves[i]=this.calculMoyEleve();
    		}
    		return tabMoyEleves;
    	}
    	void afficherTabMoyDesEleves(double []tabMoyEleves){ //pour afficher les moyennes de la classe,une erreur?
    		for(int i=0;i<tabMoyEleves.length;i++){
    		//System.out.print("nom de l'élève: " + this.Nom);
    		System.out.print("Sa moyenne sur 20 est de :" + tabMoyEleves[i]);
    		}
    	}
    }
    public class Module4_Essai3{
    	public static void main(String[]args){
    		Eleve[]tabEleve= new Eleve[2]; //pour y mettre tous les élèves
    		for(int i=0;i<tabEleve.length;i++) //permet d'afficher la saisi du constructeur
    			tabEleve[i]=new Eleve();
     
    		for(int i=0;i<tabEleve.length;i++){
    			tabEleve[i].calculMoyEleve();
    			tabEleve[i].afficherMoyEleve();
    		}
    		double []tabMoyEleves=new double[2]; //pour mettre les moyennes des élèves
    		creationTabMoyDesEleves(tabEleve);//marche pas
    		afficherTabMoyDesEleves(tabMoyEleves);//marche pas	
    	}		
    }

  2. #2
    Nouveau membre du Club
    Profil pro
    Doctorant en informatique théorique
    Inscrit en
    Décembre 2010
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Doctorant en informatique théorique

    Informations forums :
    Inscription : Décembre 2010
    Messages : 28
    Points : 32
    Points
    32
    Par défaut
    Ce sont deux méthodes de la classe Eleve, elles doivent donc etre appelées sur un objet Eleve... ce que tu ne fais pas. Tu devrais déclarer ces deux méthodes static. Tu pourras ensuite les appeler comme suit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Eleve.creationTabMoyDesEleves(tabEleve);
    Eleve.afficherTabMoyDesEleves(tabMoyEleves);

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 36
    Points : 28
    Points
    28
    Par défaut
    Merci, j'ai compris ! c'est quand même pas facile de bien séparer dans sa tête le mode procédural et le mode objet.

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Citation Envoyé par artemis93 Voir le message
    Merci, j'ai compris ! c'est quand même pas facile de bien séparer dans sa tête le mode procédural et le mode objet.
    Ça viendra...
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre habitué Avatar de titourock
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2008
    Messages
    156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2008
    Messages : 156
    Points : 190
    Points
    190
    Par défaut
    Bonjour,

    Autre petite chose, tu devrais renommer tes méthodes se référant à l'élève (comme par exemple "calculMoyEleve") en retirant le mot "Eleve" (ce qui donnerait calculerMoy) car cette méthode s'applique à un élève (de part le fait qu'elle appartient à la classe élève), il y a donc redondance.
    Et même encore cela me semble un mauvais nommage dans le sens où dans ta méthode tu as le mot "calculer". Voici pourquoi :
    Si une autre classe A est cliente de ta classe Eleve, tu lui indiques que tu fais un calcul, chose qui devrait être transparente pour lui...J'entends par là que la classe A ne doit pas savoir comment est obtenue cette moyenne : stockée dans un attribut, calculée à la demande...
    Tu peux très bien faire le calcul de ta moyenne au fur et à mesure qu'il reçoit des notes et le stocker dans un attribut (caché pour les clients) ou bien tu peux aussi stocker l'ensemble des notes de cet élève et faire le calcul à chaque fois qu'un client le souhaite.

    En résumé, le client en appelant ta méthode ne veut savoir qu'une chose : quelle est la moyenne de cette élève, et non pas la façon de l'obtenir (dont le choix de l'obtention de cette moyenne est de la responsabilité du créateur de la classe Eleve).

    Le renommage selon moi devrait être (si on reprend une syntaxe "standard" java) : getMoyenne().

    En espérant que cela t'aide également même si ça n'est pas du débugage mais de la sémantique
    Dans la vie, il y a trois sortes de mathématiciens : ceux qui savent compter et ceux qui ne savent pas...

    Ne jamais jouer à saute-moutons avec une licorne...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 07/09/2009, 16h54
  2. Réponses: 9
    Dernier message: 09/12/2008, 00h07
  3. probleme avec les dates dans une requete
    Par obydissonn dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 24/06/2008, 12h52
  4. probleme pour retrouver les methodes dans la classe instancié
    Par philo71 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 16/05/2008, 09h26
  5. [XSLT] probleme avec les doublons dans une liste deroulante
    Par mikooo dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 02/04/2007, 15h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo