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

Page 1 sur 2 1, 2  Suivant

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

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

Message  Benjy le Sam 26 Avr 2008, 11:51

petit soucis d'une moindre importance mais importante quand même...

quand je demande par exemple a l'utilisateur : combien de concurents?
il est obligé de me donner un chiffre.. hors s'il entre un caractère (ne fut-ce qu'à cause d'une faute de frappe, car c'est ce qu'il m'est arrivé Razz) il y a un exception qui sort et bam ça plante
N'y aurait-il pas moyen de récupérer le chiffre tapé par l'utilisateur comme caractère? ou plutot chaine? et d'ensuite l'utilisé comme prévu?

exemple :
l'utilisateur entre 3$ (faute de frappe en appuyant sur Enter)
je n'ai besoin que du 3
si je fais : scanner.next() il prendra les deux non?
dès lors je devrais lire uniquement le premier caractère et en faire un int
possible?

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  Invité le Sam 26 Avr 2008, 12:19

Pq ne pas utiliser un

do{
int nb = clavier.nextInt();

}while(nb>0 && nb<6){

(et ici le trt nécessaire avec le nb lu au clavier)

}

Invité
Invité


Revenir en haut Aller en bas

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

Message  Benjy le Sam 26 Avr 2008, 12:24

t'as pas compris ce que je demandais ^^

si l'utilisateur entre un caractère en même temps, quand tu fait nextInt() t'as une exception et donc Non

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  Invité le Sam 26 Avr 2008, 12:54

beh, ne me prends pas mal, mais moi je pense que ce jeu n'est pas fais pour des types qui vont la joueur après 5 pintes de bierre où une belle cloppe de joint. Donc on s'attends à ce qu'il tape un seul chiffre
Et de tte façon qd tu dit un nb entre 1 et 5, c clair le nombre ne peut faire 2 chiffres, ou 1 chiffre et 1 lettre(ou vice versa),
Donc tant que le chiffre 0<nb<6, lecture au clavier, ça me semble un bon compromis.

Invité
Invité


Revenir en haut Aller en bas

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

Message  Benjy le Sam 26 Avr 2008, 13:00

j l'ai pas mal pris jm'en fou que t'ai mal compris lol ^^

et de toute façon en tant que programmeur tu doit être paré a tout éventualité, et même si le mec est pas plein ou défoncé, il arrive a tout le monde de faire une faute de frappe, donc tout peut arriver

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  LSV le Sam 26 Avr 2008, 13:19

tu a qu'a rajouter

System.out.println("Ce system s'autodétruira en cas d'erreur");


ca devrait passer Very Happy

LSV

Nombre de messages : 638
Age : 27
Prénom : Jérome
Statut : Diplomé 2013
Localisation : Anderlecht
Date d'inscription : 24/09/2007

Revenir en haut Aller en bas

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

Message  mba le Sam 26 Avr 2008, 13:25

Benjy a écrit:petit soucis d'une moindre importance mais importante quand même...
l'utilisateur entre 3$ (faute de frappe en appuyant sur Enter)
je n'ai besoin que du 3

et si la faute de frappe est 344$ le pardonnes-tu ?
Dans ce cas, que vas-tu choisir ? :-)

Je crois que tu es mal embarqué ... moussaillon !

Mais si telle est ta voie ... cherche peut-être dans les expressions régulières.


Dernière édition par mba le Sam 26 Avr 2008, 13:30, édité 1 fois

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  Benjy le Sam 26 Avr 2008, 13:29

bah dans tous les cas je n'ai besoin que du premier chiffre, et si c'était le 4 que l'utilisateur voulais encoder, c'est dommage pour lui! mais le 3 étant valide c'est celui la qui sera pris (faut pas déconné non plus Razz)

les expression régulières???

tu a qu'a rajouter

System.out.println("Ce system s'autodétruira en cas d'erreur");


ca devrait passer Very Happy

la menace? hum oui pourquoi pas Very Happy

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  mba le Sam 26 Avr 2008, 13:34

Benjy a écrit:bah dans tous les cas je n'ai besoin que du premier chiffre, et si c'était le 4 que l'utilisateur voulais encoder, c'est dommage pour lui! mais le 3 étant valide c'est celui la qui sera pris (faut pas déconné non plus Razz)

les expression régulières???

Si tu t'intéresses uniquement au premier chiffre, pas vraiment besoin d'exprreg.

Dommage pour celui qui se trompe par $3 alors. Very Happy

Ceci dit, je maintiens qu'une erreur est à signaler et non à interpréter !

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  El_Turco le Sam 26 Avr 2008, 13:35

Tu récupère le tout en chaîne de caractère :

taChaine = clavier.next();

Tu transformes ta chaine en nombre : Integer.parseInt(taChaine);

Si ta chaine contient un autre caractère qu'un nombre, parseInt renvoit une exception de type NumberFormatException.

Tu catch donc cette exception et soit tu redemandes, soit tu fais ce que tu veux.

Par exemple :

Code:

taChaine = clavier.next();
try{
  tonNombre = Integer.parseInt(taChaine);
}
catch(NumberFormatException nfe){
  System.out.println("Nombre invalide");
}


El_Turco

Nombre de messages : 896
Age : 30
Prénom : Adem
Statut : Ancien Industriel
Localisation : Bruxelles, Schaerbeek
Date d'inscription : 16/01/2007

Revenir en haut Aller en bas

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

Message  mba le Sam 26 Avr 2008, 13:37

Pour en savoir plus -> javadoc Scanner

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  El_Turco le Sam 26 Avr 2008, 13:38

mba a écrit:Pour en savoir plus -> javadoc Scanner

Exactement ..... study

El_Turco

Nombre de messages : 896
Age : 30
Prénom : Adem
Statut : Ancien Industriel
Localisation : Bruxelles, Schaerbeek
Date d'inscription : 16/01/2007

Revenir en haut Aller en bas

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

Message  Benjy le Sam 26 Avr 2008, 13:39

j'ai trouvé ça en cherchant pour les expressiosn régulières
String[] split ( charSequence entree, int limite)

Ha mais non! je sais, suivant l'idée de El_turco

je fait une méthode privée just pour ca, ou je vérifie que ce que l'utilisateur me donne est correct et que c'est bien un chiffre et tout le toin toin...
merci ^^

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  mba le Sam 26 Avr 2008, 13:43

Et ça fait quoi ?

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  mba le Sam 26 Avr 2008, 13:44

Glad Smile

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  Benjy le Sam 26 Avr 2008, 14:27

ça compile...
voyons voir l'exécution

EDIT : zut! ca fonctionne pas! je dois retravailler ça...

Sinon j'ai un autre problème (enfin plutôt une question) :

quand on créé le jeu, les joueurs n'ont aucune carte en main, il faut donc leur distribuer 6 cartes chacun. je pensais faire ça dans cartagène, mais il faut le faire avant de créer le jeu car lors de cette création il faut définir le cercle de joueurs. ou alors je fais un getCercleJoueurs et ... ouai jvais faire ça ^^
autre proposition?


Dernière édition par Benjy le Sam 26 Avr 2008, 14:46, édité 1 fois

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  Morbid le Sam 26 Avr 2008, 14:37

Bah oue le mieux c'est de pas vraiment s'occuper de ce qu'il rentre, que se soit 3$ ou 344 ou 344$ ou encore $3 peut importe on lui redemande de rentrer le nombre ^_^

Morbid

Nombre de messages : 894
Age : 30
Prénom : Christophe
Statut : Ancien (R)
Date d'inscription : 23/11/2006

Revenir en haut Aller en bas

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

Message  Wark le Sam 26 Avr 2008, 14:53

Code:

try{
int xx = clavier.nextInt() // Reçoit un entier
}
catch(InputMismatchException xxx){
//trt au cas où le nextInt() aurait reçu autre chose qu'un entier.
}

nextInt() gèrant très bien ce cas, pourquoi s'ennuyer ? Smile

Wark

Nombre de messages : 682
Age : 29
Prénom : Cédric
Statut : Diplômé 2010
Localisation : Braine l'alleud
Date d'inscription : 04/02/2008

Revenir en haut Aller en bas

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

Message  Wark le Sam 26 Avr 2008, 14:54

Benjy a écrit:ça compile...
voyons voir l'exécution

EDIT : zut! ca fonctionne pas! je dois retravailler ça...

Sinon j'ai un autre problème (enfin plutôt une question) :

quand on créé le jeu, les joueurs n'ont aucune carte en main, il faut donc leur distribuer 6 cartes chacun. je pensais faire ça dans cartagène, mais il faut le faire avant de créer le jeu car lors de cette création il faut définir le cercle de joueurs. ou alors je fais un getCercleJoueurs et ... ouai jvais faire ça ^^
autre proposition?

La classe jeu comporte, je pense, autant de getters qu'il n'y a d'attributs. Smile

Wark

Nombre de messages : 682
Age : 29
Prénom : Cédric
Statut : Diplômé 2010
Localisation : Braine l'alleud
Date d'inscription : 04/02/2008

Revenir en haut Aller en bas

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

Message  Benjy le Sam 26 Avr 2008, 15:00

c\'est vrai ça : est-ce qu\'on doit faire tous les getteurs?? même ceux qu\'on n\'utilise pas??

[edit] enfait pour revenir au sujet principale :
je tape
String nbrConcurrents=scanner.next();
pour récupérer ce que l\'utilisateur tape, et quand je test avec 3$ il me renvoi quand même l\'exception... Autant faire direct un Try and Catch la dessus et recommencer si l\'utilisateur se goure!


Dernière édition par Benjy le Sam 26 Avr 2008, 15:17, édité 1 fois

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  Morbid le Sam 26 Avr 2008, 15:15

C'est pas vraiment obligé de faire tout les getters non mais bon ça prend pas beaucoup de temps a faire et tu en aura peut être l'utilité plus tard dans ton projet ...

Morbid

Nombre de messages : 894
Age : 30
Prénom : Christophe
Statut : Ancien (R)
Date d'inscription : 23/11/2006

Revenir en haut Aller en bas

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

Message  Benjy le Sam 26 Avr 2008, 15:18

bah j'en fais un quand j'en ai besoin quoi ^^

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  Morbid le Sam 26 Avr 2008, 15:19

Apres en général les IDE le font même pour toi si tu veux xD

Morbid

Nombre de messages : 894
Age : 30
Prénom : Christophe
Statut : Ancien (R)
Date d'inscription : 23/11/2006

Revenir en haut Aller en bas

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

Message  Benjy le Sam 26 Avr 2008, 15:40

enfait je ne peux vous dire si cela fonctionne vu mon autre erreur de warnings... voir sujet
Cartagène: methode non exécutée

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  pbt le Sam 26 Avr 2008, 21:23

J'ai déjà parlé dans un autre post de regex (expressions régulières) de d'exemple de "prise en charge" des entrées clavier des utilisateurs ...

_________________
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  Contenu sponsorisé Aujourd'hui à 10:56


Contenu sponsorisé


Revenir en haut Aller en bas

Page 1 sur 2 1, 2  Suivant

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