Euh tu veut dire, lorsque l'on tappe un autre caractère qu'un chiffre dans un JtextField, ça ne l'afficha pas ?
Te casse pas la tête, utilise un SpinnerNumberModel.
String regex ="[0-9]+";
Pattern p = Pattern.compile(regex);
if (!p.matcher(textField.getText ()).matches())
//C'est pas un nombre.
else
//C'est un nombre
Y'a plus simple : Integer.parseInt, avec un catch au cas où ce serait invalide :
try {
int val = Integer.parseInt(textField.getText());
//C'est valide
} catch (NumberFormatException ex){
//C'est invalide
}
Plusieurs avantages :
- Tu récupères la valeur sous forme d'int dans la foulée (Si tu veux impérativemnt un int, t'en auras sûrement besoin)
- Ca tient compte de toutes les façons d'écrire un int (Y-compris la forme hexa)
- C'est plus standard qu'une regex perso
Par contre, il faut que tu voies si tu veux gérer les nombres négatifs ou pas. Avec parseInt, si tu veux que des nombres positifs, faudra ajouter un test.
D'une manière générale, la regex est plutôt spécifique, tandis que le parseInt est standard (Et convertit la chaîne en int dans la foulée). Donc à moins d'avoir un besoin spécifique (Uniquement des entiers positifs écrits sous une forme décimale...), je te conseille le parseInt.
Oui ça j'utilise aussi, mais je me demandais si c'était mieux ou pas, maintenant j'ai la réponse.
C'est donc plus rapide de traiter une Exception que de faire des tests.
C'est donc plus rapide de traiter une Exception que de faire des tests.
Non ! Dans la majorité des cas, il faut faire des tests. Mais quand les tests sont trop complexes, ou déjà effectués par la méthode que tu appelles (En l'occurence, Integer.parseInt *refait* les tests pour savoir si le nombre est bien formaté...), il est plus simple de passer par une exception (Et c'est également plus performant).
Donc les exceptions : oui, mais seulement dans les cas complexes. Ou bien quand tu ne peux pas retourner une valeur de type "null" qui indiquerait une erreur (Dans un constructeur par exemple, ou dans certaines méthodes). Sinon, un test.
Après, ce n'est pas une règle absolue, il existe beaucoup de cas où les exceptions valent mieux que les tests. Mais il ne faut pas en abuser. Si tu peux faire un test simple, fais-le.
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.