éviter que l'utilisateur marque des lettres

Fermé
le debutant - Modifié par le debutant le 24/04/2015 à 10:10
 le debutant - 24 avril 2015 à 13:30
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

ellana29460 Messages postés 689 Date d'inscription lundi 7 octobre 2013 Statut Membre Dernière intervention 12 septembre 2015 172
24 avril 2015 à 10:27
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
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