Souci avec mon code

lixana -  
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+ ":" );

}

}

}

3 réponses

  1. tksteph Messages postés 208 Date d'inscription   Statut Membre Dernière intervention   25
     
    Et c'est quoi le résultat attendu?
    0
  2. lixana
     
    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
  3. tksteph Messages postés 208 Date d'inscription   Statut Membre Dernière intervention   25
     
    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