Souci avec mon code
lixana
-
tksteph Messages postés 208 Date d'inscription Statut Membre Dernière intervention -
tksteph Messages postés 208 Date d'inscription Statut Membre Dernière intervention -
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+ ":" );
}
}
}
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+ ":" );
}
}
}
3 réponses
-
Et c'est quoi le résultat attendu?
-
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 -
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.