Bonjour,
Comment contrôler en java qu'un String est numérique, ie compris entre 00.00 et 20.00 et qui ne contient pas de caractère alphabétique ou autre (ex abc # ' etc ..) ?
Merci d'avance
Bonjour,
Comment contrôler en java qu'un String est numérique, ie compris entre 00.00 et 20.00 et qui ne contient pas de caractère alphabétique ou autre (ex abc # ' etc ..) ?
Merci d'avance
Avec une expression régulière: elle sont presques faites "exprès pour ça".
La littérature sur celles-ci est abondante sur le forum et sur http://java.developpez.com/ tu trouveras un très bon tutorial ed Hugo Etiévant sur la question
Exemple:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2String expr = "([0-1][0-9]\\.[0-9][0-9])|(20\\.00)";
Tu peux aussi le faire avec un KeyListener, lorsqu'on entre un caractère, si ce n'est pas un chiffre ou le caractère point (pour la première fois biensur) ou une flèche de redirection ou encore un caractère d'échappement tu fais e.consume.
Tu peux aussi gerer l'évènement lié au focus, là quand le contrôle perds le focus, tu testes si la valeur est correcte, si c'est pas le cas tu lui affiche un message d'erreur approprié et tu lui redonne le focus.
Tout est listener
En fait, ma zone est une note compris entre 0 et 20 qui peut être écrite avec ou sans centième de la forme :
n ou ou nm ou n.m ou .nn ou nm.mm ou n.mm .
Si je dois faire les exp, j'écris :
"([0-9]) | ([0-1][0-9]) | ([0-1][0-9]\\.[0-9]) | ([0-1][0-9]\\.[0-9][0-9]) |
(\\.[0-9]) | (\\.[0-9][0-9]) |(20) | (20\\.00)
est ce correct ?
je comprends pas trop le \\.
C'est correct... (si ce n'est qu'il manque 20.0 et peut-être d'autres cas: je nai pas vérifié que ton expression était exhaustive)
Le \\. désigne le caractère '.': si tu oublies le double \\ devant, ce qui est cherché n'est pas un point mais "n'importe quel caractère" => cf. le tuto sur les expressions régulières
Enfin, dernière remarque pour clarifier ton expression... le "ou" est commutatif
Sinon au moment ou tu veux enregistrer ta note, tu valide ton questionnaire.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 double note = 0; try{ note = Double.parseDouble(champNote.getText()); if(note<0 || note > 20){ throw(new NumberFormatException()); } }catch(NumberFormatException e){ //Affichage dans ton interface d'un astérisque sur le champ note et d'une info. stipulant les valeurs acceptées }
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager