Souci avec mon code

Fermé
lixana - 15 mai 2013 à 01:25
tksteph Messages postés 204 Date d'inscription samedi 20 mars 2010 Statut Membre Dernière intervention 3 janvier 2018 - 15 mai 2013 à 02:09
Bonjour,
jai pas encore fini le code mais cette parti ne me donne pas le resultat attendu , aidez moi svp je suis debutant en java.


import java.io.*;
import java.util.*;


public class moyennes {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
final int Nel_max = 40;
int Lnom = 20;

String nom[]= new String[Nel_max];
int moyenne[]= new int[Nel_max];
int nel;
int note;
int s_note;
int i;

Scanner sc = new Scanner(System.in);
do{
System.out.println("entrez le nombre d'eleves");
nel = sc.nextInt();
System.out.println(nel);

if (nel<=0 || nel>Nel_max)
System.out.println ("***Incorrect***");
}while (nel>0 && nel<=Nel_max);

Scanner sc1=new Scanner(System.in);

for ( i=0;i<nel;i++){
System.out.println("nom de l'eleve" + i+ ":" );

}

}


}




A voir également:

3 réponses

tksteph Messages postés 204 Date d'inscription samedi 20 mars 2010 Statut Membre Dernière intervention 3 janvier 2018 25
Modifié par tksteph le 15/05/2013 à 01:34
Et c'est quoi le résultat attendu?
0
il doit enregistrer la valeur saisie comme reponse et executer les conditions,
mais il me donne le contraire comme resultat :

exemple:

nombre d eleve:
20
20
nombre deleve:

il repete a chaque fois quand la saisie n'est pas correcte on ne peu plus saisir une autre valeur
0
tksteph Messages postés 204 Date d'inscription samedi 20 mars 2010 Statut Membre Dernière intervention 3 janvier 2018 25
Modifié par tksteph le 15/05/2013 à 02:11
A priori, un coup d'oeil rapide sur ton code laisse à penser que tu souhaites afficher un certain nombre de fois (indiqué par l'utilisateur) la ligne nom de l'Elève i
Et tu souhaites aussi que ce nombre de fois soit entre 0 et Nel_max.

Malheureusement le controle de ta boucle do {}while() ne permet pas de faire celà, mais plustôt de boucler tant que la valeur saisie est entre 0 et Nel_max, et de faire le traitement plustôt lorsque la valeur est < 0 ou > Max
Du coup tu auras un affichage **Incorrect** lorsque la valeur <0 et l'affichage (La repetition) lorsque la valeur est > Max


Donc pour corriger ce comportement, tu peux ajuster ton programme comme ceci




import java.util.*;

public class Moyennes {
final int nelMax = 40;
int Lnom = 20;

String nom[] = new String[nelMax];
int moyenne[] = new int[nelMax];
int nel;
int note;
int sNote;
int i;



/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub

new Moyennes().bouclage();
}

void bouclage(){
Scanner sc = new Scanner(System.in);

do {
System.out.println("entrez le nombre d'eleves");
nel = sc.nextInt();
System.out.println(nel);
if (nel <= 0 || nel > nelMax) { // Regarde le Controle
System.out.println("***Incorrect***");
bouclage(); // ICI tu Relance le process
}else{
for (i = 0; i < nel; i++) {
//ICI si les conditions sont OK alors tu fais tes affichages
System.out.println("nom de l'eleve" + i + ":");
}
}

} while (nel < 0 && nel >= nelMax); // Regarde le Controle
}

}





Attention avec les noms de Classes, attributs, méhtodes en Java (Respect ds Conventions) Aucun impact au niveau du fonctionnement de ton code, mais c'est bien d'y penser.
0