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 :

Il y a une erreur dans mon programme, mais où ?


Sujet :

avec Java

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 40
    Par défaut Il y a une erreur dans mon programme, mais où ?
    Bonjour à tous.

    Comme le titre l'indique, j'ai fait un programme dans lequel il y a une erreur mais malheureusement je ne la trouve pas. C'est pour cela que je viens quémander votre aide. Ce n'est pas une erreur à la compilation mais une erreur à l'exécution.

    Il y a plusieurs classes dans ce programme mais je ne vous mets que la partie de la classe concernée par l'erreur car je ne pense pas que cette erreur se trouve dans l'une des autres classes (si vous avez besoin du reste de la classe ou des autres classes, faites le moi savoir, je mettrai le reste).

    Ce programme permet donc de calculer le niveau de compétence des élèves d'une classe de primaire. L'utilisateur entre le nom des éléves et des compétences ainsi que leurs niveaux de compétences dans chaque compétence (pour info, l'utilisateur tape soit A, NA, ECA ou ABS pour absent).
    Suite à ces saisies, trois tableaux s'affichent : le 1er récapitulant le tout, le second calculant le pourcentage de A, ECA, NA par matière et le dernier calculant le nombre de A, ECA, NA par élève.

    Le problème est présent sur ce dernier tableau. En effet, tout va bien tant que l'utilisateur ne saisit pas ABS. Mais quand l'utilisateur saisit ABS, le calcul ne se fait plus correctement et il n'y a plus que des "0" dans les cases pour les derniers élèves.

    Voici la partie du programme concernant la saisie par l'utilisateur :
    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
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    public void saisieNotes() {
    		String ch;
    		int resultat;
    		tabNotes = new String[nbCompetences][nbEleves];
    		tabPourcentages = new int[nbCompetences][3];
    		tabNb = new int[3][nbEleves];
    		nbElevesBis = nbEleves;
     
    		System.out.println();
     
    		for (int i=0; i<nbCompetences; i++) {
    			System.out.println();
    			System.out.println("Pour la compétence '" + tabCompetences[i] + "' : ");
    			System.out.println();
    			compteur_A = 0;
    			compteur_ECA = 0;
    			compteur_NA = 0;
    			nbEleves = nbElevesBis;
     
    			for (int j=0; j<nbElevesBis; j++) {
    				fin = false;
    				while (fin==false) {
    					try {
    						System.out.print("      Entrez le niveau d'acquisition de " + tabEleves[j] + " : ");
    						Scanner sc = new Scanner(System.in);
    						ch = sc.nextLine();
    						tabNotes[i][j] = ch.toUpperCase();
    						if (tabNotes[i][j].equals("A") || tabNotes[i][j].equals("ECA") || tabNotes[i][j].equals("NA") || tabNotes[i][j].equals("ABS")) {
    							fin = true;
    						}
    						else {
    							throw new ErreurSaisie();
    						}
    					}
    					catch (ErreurSaisie e) {
    						JOptionPane.showMessageDialog(null, "Veuillez saisir A, ECA, NA ou ABS.", "ERREUR DE SAISIE", JOptionPane.ERROR_MESSAGE);
    					}
    				}
     
    				if (tabNotes[i][j].equals("A")) {
    					compteur_A = compteur_A + 1;
    				}
    				else if (tabNotes[i][j].equals("ECA")) {
    					compteur_ECA = compteur_ECA + 1;
    				}
    				else if (tabNotes[i][j].equals("NA")) {
    					compteur_NA = compteur_NA + 1;
    				}
    				else {
    					nbEleves = nbEleves - 1;
    				}
    			}
     
    			for (int k=0; k<3; k++) {
    				if (k==0) {
    					resultat = (compteur_A * 100) / nbEleves;
    					tabPourcentages[i][k] = resultat;
    				}
    				if (k==1) {
    					resultat = (compteur_ECA * 100) / nbEleves;
    					tabPourcentages[i][k] = resultat;
    				}
    				if (k==2) {
    					resultat = (compteur_NA * 100) / nbEleves;
    					tabPourcentages[i][k] = resultat;
    				}
    			}
    		}
     
    		for (int i=0; i<nbEleves; i++) {
    			compteur_A = 0;
    			compteur_ECA = 0;
    			compteur_NA = 0;
     
    			for (int j=0; j<nbCompetences; j++) {
    				if (tabNotes[j][i].equals("A")) {
    					compteur_A = compteur_A + 1;
    				}
    				if (tabNotes[j][i].equals("ECA")) {
    					compteur_ECA = compteur_ECA + 1;
    				}
    				if (tabNotes[j][i].equals("NA")) {
    					compteur_NA = compteur_NA + 1;
    				}
    			}
     
    			for (int k=0; k<3; k++) {
    				if (k==0) {
    					tabNb[k][i] = compteur_A;
    				}
    				if (k==1) {
    					tabNb[k][i] = compteur_ECA;
    				}
    				if (k==2) {
    					tabNb[k][i] = compteur_NA;
    				}				
    			}
    		}
    	}
    Et voici la partie concernant l'affichage du tableau :
    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
    public void afficher_nb() {
    		JTextField[][]tab2 = new JTextField[3][nbEleves];
    		JPanel jpane2;
    		JFrame fenetre2;
     
    		fenetre2 = new JFrame();
    		fenetre2.setLocation(0,(hauteur-230));
    		fenetre2.setTitle("Tableau Eleve");
    		fenetre2.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		fenetre2.setSize(new Dimension((largeur-5),(hauteur-630)));
    		jpane2 = new JPanel();
    		JScrollPane monScrollPane2 = new JScrollPane();
    		monScrollPane2.setViewportView(jpane2);
    		fenetre2.setContentPane(monScrollPane2);
    		jpane2.setLayout(new GridLayout(4,nbEleves+1));
     
    		for (int i=0; i<3; i++) {
    			for (int j=0; j<nbEleves; j++) {
    				tab2[i][j] = new JTextField();
    				tab2[i][j].setHorizontalAlignment(JTextField.CENTER);
    				tab2[i][j].setEditable(false);
    				tab2[i][j].setFont(new Font("sansserif", Font.BOLD, 14));
    			}
    		}
     
    		jpane2.add(new Label(" "));
     
    		String[]tabNiveau = new String[3];
    		tabNiveau[0] = "Nombre de A";
    		tabNiveau[1] = "Nombre de ECA";
    		tabNiveau[2] = "Nombre de NA";
     
    		for (int i=0; i<nbEleves; i++) {
    			jpane2.add(new MyJLabel("" + tabEleves[i], JLabel.CENTER));
    		}
    		for (int i=0; i<3; i++) {
    			jpane2.add(new MyJLabel("" + tabNiveau[i], JLabel.CENTER));
    			for (int j=0; j<nbEleves; j++) {
    				jpane2.add(tab2[i][j]);
    			}
    		}
     
    		for (int i=0; i<3; i++) {
    			for (int j=0; j<nbEleves; j++) {
    				tab2[i][j].setText("" + tabNb[i][j]);
    			}
    		}
     
    		fenetre2.setVisible(true);
    	}
    Vous trouverez également en pièce jointe, un exemple en image. L'erreur se trouve dans le tableau du bas (dernière colonne).

    Si quelqu'un avait le temps d'y jeter un coup d'oeil et de m'apporter la réponse ou au moins de me mettre sur la piste, je lui en serais très reconnaissant.

    Merci d'avance.
    Images attachées Images attachées  

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

Discussions similaires

  1. Explication d une erreur dans mon programme sas
    Par bailliblaire dans le forum SAS Base
    Réponses: 1
    Dernier message: 18/01/2012, 17h16
  2. [Help] Erreurs dans mon programme
    Par Tacha dans le forum Langage
    Réponses: 13
    Dernier message: 02/10/2006, 13h57
  3. Integrer une musique dans mon programme
    Par Tutux84 dans le forum C
    Réponses: 2
    Dernier message: 29/01/2005, 12h41
  4. [Lien]erreur dans mon programme python
    Par durnambule dans le forum Général Python
    Réponses: 11
    Dernier message: 29/01/2004, 14h59
  5. [] Utiliser AVI d'une DLL dans mon programme
    Par seb.49 dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 02/05/2003, 14h52

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