éviter que l'utilisateur marque des lettres

le debutant -  
 le debutant -
Bonjours ,
/!\je tiens a préciser que je suis débutant donc ne ragez pas si je ne comprend rien!
Donc je m'explique j ai fait un programme ou l'utilisateur doit deviner un nombre entre 1 et 100 mais quand il écrit une lettre(ou un nombre decimal) ça fais buguer le programme.Suite à cella je voudrais mettre une ligne de code pour que l'utilisateur ne puisse pas écrire des lettres et des nombres decimaux, mais comment? :0
ps: je programme sur éclipse.

Merci d'avance! :)

1 réponse

  1. ellana29460 Messages postés 805 Statut Membre 181
     
    Tu peux faire comme suit :

    import java.io.StreamTokenizer; //inutile si déja importé, à toi de voir si tu en as besoin ou non
    
    StreamTokenizer nombreSaisi = new StreamTokenizer(
                                          new InputStreamReader(
                                              System.in() ) );
    // on définit ta vairable qui va recevoir les saisies au clavier
    do{
        System.out.println("Saisie : ");
        flot.nextToken(); //on lit ce que l'utilisateur tape au clavier
        if( ( nombreSaisi.ttype != StreamTokenizer.TT_NUMBER ) 
              && ( 0 < nombreSaisi.nval ) 
              && ( nombreSaisi.nval < 101 ) )
        { //on vérifie si sa saisie est un nombre entre 1 et 100
            System.out.println("Erreur de saisie. Merci de rentrer un nombre compris entre 1 et 100");
        }
    }while( ( nombreSaisi.ttype != StreamTokenizer.TT_NUMBER ) 
              && ( 0 < nombreSaisi.nval ) 
              && ( nombreSaisi.nval < 101 ) );
              //et on fait ca tant qu'il fait des fautes de frappe (au cas ou ce soit un boulet fini, on sait jamais ...)
    


    j'ai fait des retours à la ligne pour la lisibilité du code, ils ne sont pas obligatoires mais ne gênent pas le compilateur
    0
    1. le debutant
       
      heu comment dire....je ne comprend rien x)
      voici mon programe(bien sur j ai fais import et tout)
      [code]
      //valeurs

      long score = 0;
      long random = rand.nextInt(100) + 1;
      long enter = random + 1;
      long essai = 0;
      long decompte_des_tours = 0;
      long nombre_de_tour = 3;

      //fin des valeurs

      //nombre de tour
      System.out.println("marquez le nombre de tour que vous voulez faire");
      nombre_de_tour = scan.nextInt();


      //il dit que enter.ttype est faux

      if( ( enter.ttype != StreamTokenizer.TT_NUMBER );
      //le jeu

      while (decompte_des_tours<nombre_de_tour) {
      decompte_des_tours = decompte_des_tours + 1;
      random = rand.nextInt(100) + 1;

      //test d'inegaliter

      while (enter !=random) {
      essai = essai + 1;

      System.out.print ("Ecrivez un nombre entre 1 et 100:");
      enter = scan.nextInt();

      if(enter>100 || enter<1)
      System.out.println("votre nombre n est pas entre 1 et 100!");


      else {
      if (enter < random);
      System.out.println("Votre nombre est trop petit");


      if (enter > random) ;
      System.out.println("votre nombre est trop grand");
      }
      }

      }
      //affichage du nombre d'essai
      if (enter == random){
      System.out.print ("vous avez gagner ce tour en " );
      System.out.print (essai);
      System.out.print (" essai(s)");
      System.out.println();
      score = score + 1;
      }


      //fin du jeu


      System.out.println ("votre score est de :" + score );

      if (score>1){
      System.out.println ("vous avez réussi a gagner dans un jeu ou vous ne pouvez pas perdre,Bravo!");
      //fin du code
      [code/]

      bon....expliquer moi ce que c est que c est:
      StreamTokenizer nombreSaisi(je doit le remplace par enter?) = new StreamTokenizer(
      new InputStreamReader(
      System.in() ) );

      puis: flot.nextToken(); n est pas pareille que scan.nextInt();?

      merci de ta reponse rapide ,mais tu ma pas dit comment faire pour que l'utilisateur ne puisse pas écrire des nombres décimaux ( sauf si c est pareille que StreamTokenizer nombreSaisi = new StreamTokenizer( )
      0