Salut à tous, après avoir le chapitre des constructeurs, je commence le chapitre de Java qui concerne les tableaux.
Pour m'entrainer j'essaie de faire un petit programme qui demande la saisie d'un nombre d'élève dans une classes, les informations propres à chaque élève (nom, prénom, nombres de notes, notes, moyenne des notes).
Seulement je bloque sur un point.
Comme vous voyez dans mon code source j'ai deux classes : Etudiant (concerne chaque étudiant) et Cursus (concerne une classe entière d'étudiants).
Mon programme tourne plutôt bien. Seulement, j'aimerais ajouter une toute petite amélioration.
Après avoir demandé le nombre d'étudiant dans la classe, le programme demande donc la saisie des infos personnelles expliquées ci-dessus.
Et au lieu de marquer nom de l'étudiant (ligne 18 de la classe Etudiant ), prénom de l'étudiant (ligne 20 de la classe Etudiant), etc...
J'aimerais rajouter sa position dans la liste d'étudiants : nom et prénom de l'étudiant n°1 puis n°2, etc... jusqu'au dernier étudiant.
Pour ça j'aimerais dans les paramètres d'une boucle for faire appel à une méthode get contenue dans la classe Cursus.
Ma question est donc : comment faire appel à l'objet cursus de type Cursus (pour utiliser cursus.getListe()) sans faire appel au constructeur qui demande d'initialiser toute les données.
En effet, si j'utilise la ligne Cursus cursus = new Cursus, le constructeur par défaut va être appelé et ça va redemander la saisie des données de l'objet classe.
Moi, je veux juste faire appel à la méthode getListe() en fait.
Voici mon code source :
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
59
60
61
62
63 package tri; import java.util.*; public class Etudiant { private String nom, prenom; private double [] note; private double moyenne; public Etudiant(){ int nombre; int zero = 0; Scanner scan = new Scanner(System.in); // J'ai essayé ça mais cest un peu bête en fait //Cursus cursus = new Cursus(zero); for (int i=0; i<=cursus.getTailleListe() - 1;i++){ System.out.print("Nom de l'étudiant : " ); nom = scan.next(); System.out.print("Prénom de l'étudiant : "); prenom = scan.next(); } do{ System.out.print("Combien de note pour l'étudiant "); System.out.print(prenom + " " + nom + " : "); nombre = scan.nextInt(); }while (nombre<1); note = new double [nombre]; for (int i=0; i<=note.length-1; i++){ System.out.print("Note numéro " + (i+1)+ " : "); note[i]=scan.nextDouble(); } moyenne = calculMoyenne(); } // Private car pour des raisons de sécurité, il vaut mieux que le calcul ne puisse se faire que dans la classe Etudiant private double calculMoyenne(){ double somme=0; for(double valeur : note){ somme = somme + valeur; } return somme / note.length; } public double getMoyenne(){ return moyenne; } public void afficherEtudiant(){ System.out.print("Notes de l\'élève " + prenom + nom +" : " ); for (double valeur:note){ System.out.print(" "); System.out.print(valeur); } System.out.println(""); System.out.print("Moyenne de l\'élève " + prenom + nom+ " : "); System.out.println(moyenne); } }
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 package tri; import java.util.*; public class Cursus { // liste est un tableau d'objets de types Etudiant private Etudiant [] liste; private int nombreEtudiant; // private double [] listeMoyenne; public Cursus(){ Scanner scan = new Scanner(System.in); System.out.print("Nombre d\'étudiants dans la classe : "); nombreEtudiant = scan.nextInt(); liste = new Etudiant [nombreEtudiant]; for (int i=0; i<= liste.length - 1; i++){ // saisie des infos relatives à chaque étudiant liste[i] = new Etudiant(); } } public Cursus(int pNombreEtudiant){ if (pNombreEtudiant>0){ nombreEtudiant = pNombreEtudiant; liste = new Etudiant [nombreEtudiant]; for (int i=0; i<= liste.length - 1; i++){ liste[i] = new Etudiant(); } } } public int getTailleListe(){ return liste.length; } public void afficherListe(){ //pour chaque (valeurs) objet e (de type Etudiant) de la liste appliquer afficherEtudiant() (présent dans l'objet e) for(Etudiant e :liste){ e.afficherEtudiant(); } // listeMoyenne = new double [liste.length]; //for (int i=0; i< liste.length; i++){ //listeMoyenne[int i] = //} } }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 package tri; public class Tri { public static void main(String[] args) { Cursus cursus = new Cursus(); cursus.afficherListe(); } }
En espérant que ma question soit compréhensible (c'est pas toujours facile de bien formuler ses question quand on débute ....)
Partager