outofbound dans un tableau simple
Alors je pense que c'est que j ai dépassé la capacité du tableau pourtant,si j initialise nbrEtudiant = 0, j ai "outofbound"lors de l'éxécution pourtant le print m'indique bien la bonne valeur entrée au clavier,si j'initialise nbrEtudiant = 8,que j entre 2 àu clavier mon print m 'indique 2 et je ne peut rentrer que 2 valeurs ce qui est normal comme je réinitialise ma variable nbrEtudiant et tout marche ,alors pourquoi avec nbrEtudiant= 0 j ai un soucis alors que j ai une valeur entrer au clavier et qui apparait dans le print
merci pour vos réponses
exécution du code
Code:
1 2 3 4 5 6 7 8 9
| Donnez le nombre d'étudiant : 2
2
Note de létudiant N°1 : 15
2
Note de létudiant N°2 : 10
Moyenne de classe = :12.5
Etudiant : note :( écart avec la moyenne )
Etudiant N1 :15.0 : (2.5 )
Etudiant N2 :10.0 : (-2.5 ) |
code:
Code:
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
| import java.util.Scanner;
public class Moyenne {
private static Scanner clavier = new Scanner(System.in);
public static void main(String[] args) {
//attributs initialisation
int nbrEtudiants =8;
double moyenne = 0.0;
double somme = 0.0;
double ecart = 0.0;
double []notes = new double [nbrEtudiants];
//demande le nbr d'étudiant à l'utilisateur
System.out.print("Donnez le nombre d'étudiant : ");
nbrEtudiants = clavier.nextInt();
//parcours du tableau pour entrer les notes
for (int i = 0; i < nbrEtudiants; i++) {
System.out.println(nbrEtudiants);
System.out.print(" Note de létudiant N°"+(i+1)+" : ");
//on stocke la note dans la i(eme) case du tableau ;
notes[i] = clavier.nextDouble();
somme += notes[i];
}
//affichage résultat
moyenne = somme/nbrEtudiants;
System.out.println("Moyenne de classe = :" +moyenne);
System.out.println("Etudiant : note :( écart avec la moyenne )");
for (int i = 0; i < nbrEtudiants; i++) {
ecart = notes[i]-moyenne;
System.out.println("Etudiant N"+(i+1)+" :" +notes[i]+" : ("+ ecart +" )");
}
}
} |
avec la variable nbrEtudiant initialisé à 0
Code:
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
| import java.util.Scanner;
public class Moyenne {
private static Scanner clavier = new Scanner(System.in);
public static void main(String[] args) {
//attributs initialisation
int nbrEtudiants =0;
double moyenne = 0.0;
double somme = 0.0;
double ecart = 0.0;
double []notes = new double [nbrEtudiants];
//demande le nbr d'étudiant à l'utilisateur
System.out.print("Donnez le nombre d'étudiant : ");
nbrEtudiants = clavier.nextInt();
//parcours du tableau pour entrer les notes
for (int i = 0; i < nbrEtudiants; i++) {
System.out.println(nbrEtudiants);
System.out.print(" Note de létudiant N°"+(i+1)+" : ");
//on stocke la note dans la i(eme) case du tableau ;
notes[i] = clavier.nextDouble();
somme += notes[i];
}
//affichage résultat
moyenne = somme/nbrEtudiants;
System.out.println("Moyenne de classe = :" +moyenne);
System.out.println("Etudiant : note :( écart avec la moyenne )");
for (int i = 0; i < nbrEtudiants; i++) {
ecart = notes[i]-moyenne;
System.out.println("Etudiant N"+(i+1)+" :" +notes[i]+" : ("+ ecart +" )");
}
}
} |
erreur pourtant ma variable indique bien 5
Code:
1 2 3 4 5
| Donnez le nombre d'étudiant : 5
5
Note de létudiant N°1 : 8
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
at Moyenne.main(Moyenne.java:26) |