Cartagène : Et si l'utilisateur entre une chaine??

Page 2 sur 2 Précédent  1, 2

Voir le sujet précédent Voir le sujet suivant Aller en bas

Re: Cartagène : Et si l'utilisateur entre une chaine??

Message  Benjy le Sam 26 Avr 2008, 23:47

qui se nomme?

Benjy

Nombre de messages : 382
Prénom : Benjamin
Statut : étudiant
Localisation : Ath - Hainaut
Date d'inscription : 06/10/2007

Revenir en haut Aller en bas

Re: Cartagène : Et si l'utilisateur entre une chaine??

Message  Wilbur le Lun 28 Avr 2008, 14:32

Bonjour,

j'ai aussi un petit problème quand je veux gérer ce que l'utilisateur va rentrer.

Par exemple, avec ce petit bout de code où je veux connaitre le nombre de joueurs :
Code:

 int nbJ = 0;
 System.out.print("Nombre de joueurs [2 à 5] : ");
 while(nbJ<2 || nbJ>5){
      try{
          nbJ = clavier.nextInt();
          if(nbJ<2 || nbJ>5)
                System.out.print("Nombre incorrect, entrer un nombre de joueurs correct : ");
      } catch(InputMismatchException ime){
          System.out.print("Nombre incorrect, entrer un nombre de joueurs correct : ");
      }
 }

En exécutant, je pensais qu'en rentrant une valeure incorrecte, je rentrerais dans le catch, que la phrase serait affichée, et que je pourrais rentrer à nouveau une valeur (car la condition du while n'est toujours pas remplie).

Néanmoins, je me retrouve avec ça :

Code:
Nombre de joueurs [2 à 5] : sq              //la mauvaise valeur
Nombre incorrect, entrer un nombre de joueurs correct : Nombre incorrect, entrer un nombre de joueurs correct : Nombre incorrect, entrer un nombre de joueurs correct : Nombre incorrect, entrer un nombre de joueurs correct : Nombre incorrect, entrer un nombre de joueurs correct : Nombre incorrect, entrer un nombre de joueurs correct : Nombre incorrect, entrer un nombre de joueurs correct : Nombre incorrect, entrer un nombre de joueurs correct : Nombre incorrect, entrer un nombre de joueurs correct : Nombre incorrect, entrer un nombre de joueurs correct : Nombre incorrect, entrer un nombre de joueurs correct : Nombre in

Et je vous épargne les nombreuses lignes qui suivent... -_-"

Il apparait donc qu'il boucle sur le catch, et ne rentre plus dans le try...

Si vous avez une petite astuce pirat

Wilbur

Nombre de messages : 46
Age : 27
Prénom : Romain
Statut : Etudiant 2ème Réseaux
Date d'inscription : 20/02/2008

Revenir en haut Aller en bas

Re: Cartagène : Et si l'utilisateur entre une chaine??

Message  NicoM le Lun 28 Avr 2008, 14:41

Code:
whiles (!(chaine.matches("[1,2,3]"))) {
  chaine.nextLine();
}

int choix = parseInt(chaine)

plus simple je trouve :/

EDIT : Je pense que c'est ce que Pbt voulait dire ^^

NicoM

Nombre de messages : 116
Prénom : Nicolas
Statut : étudiant 3ieme Industrielle
Localisation : Bascule
Date d'inscription : 07/12/2007

Revenir en haut Aller en bas

Re: Cartagène : Et si l'utilisateur entre une chaine??

Message  pbt le Lun 28 Avr 2008, 14:44

Il y a sans doute un problème de buffer la-dessous. Mais je ne cherche pas plus avant car ce n'est, pour moi, pas la meilleure manière de faire.

Pq n'écris-tu pas un truc de la forme (j'ai l'impression de me répéter),
Code:
do {
  System.out.print("Entre un nombre compris entre 2 et 5: ") ;
  s = clavier.nextLine() ;
} while ( !s.matches("[2-5]") ) ;
n = Integer.parseInt(s) ;

_________________
smartq.namok.be · faq ·  · IRC / irc.freenode.net #esi · blog.namok.be
style #pbt {heigth:189cm; weight:79kg; eye-color:#524000; hair:very short; dead pixels: some; }

pbt
Admin

Nombre de messages : 4862
Age : 45
Prénom : Pierre
Statut : prof
Localisation : La cité des géants
Date d'inscription : 24/11/2005

http://esi.namok.be

Revenir en haut Aller en bas

Re: Cartagène : Et si l'utilisateur entre une chaine??

Message  mba le Lun 28 Avr 2008, 14:59

Wilbur a écrit:
Code:

 while(nbJ<2 || nbJ>5){
      try{
          nbJ = clavier.nextInt();
      } catch(InputMismatchException ime){
          System.out.print("Nombre incorrect, entrer un nombre de joueurs correct : ");
      }
 }

Le nextInt ne consomme pas la donnée.

Ajoute un clavier.next();
dans ton catch

mba

Nombre de messages : 1493
Statut : prof
Localisation : Lessines
Date d'inscription : 07/10/2006

Revenir en haut Aller en bas

Re: Cartagène : Et si l'utilisateur entre une chaine??

Message  Wilbur le Lun 28 Avr 2008, 15:20

PbT a écrit:Il y a sans doute un problème de buffer la-dessous. Mais je ne cherche pas plus avant car ce n'est, pour moi, pas la meilleure manière de faire.

Pq n'écris-tu pas un truc de la forme (j'ai l'impression de me répéter),
Code:
do {
  System.out.print("Entre un nombre compris entre 2 et 5: ") ;
  s = clavier.nextLine() ;
} while ( !s.matches("[2-5]") ) ;
n = Integer.parseInt(s) ;

De fait... plus concis et plus clair, j'opte pour cette solution...

Merci à Mr Pbt, ainsi qu'à Mme mba et NicoM pour vos réponses.

Au plaisir.

Wilbur

Nombre de messages : 46
Age : 27
Prénom : Romain
Statut : Etudiant 2ème Réseaux
Date d'inscription : 20/02/2008

Revenir en haut Aller en bas

Re: Cartagène : Et si l'utilisateur entre une chaine??

Message  Contenu sponsorisé Aujourd'hui à 07:14


Contenu sponsorisé


Revenir en haut Aller en bas

Page 2 sur 2 Précédent  1, 2

Voir le sujet précédent Voir le sujet suivant Revenir en haut


 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum