Comment valider si le Texte saisi est un nombre numérique?
J'ai un calcul de l'application dont j'ai besoin pour valider les champs de vérifier si les valeurs entrées numériques des numéros et non alphanumériques. J'ai quelques idées sur les codes.
Merci de me guider si j'ai fait quelque chose de mal ou semblent noob comme c'est ma première fois d'essayer de Swing.
private void jTextField1ActionPerformed(java.awt.event.ActionEvent evt) {
String text1 = jTextField1.getText(); //TODO add your handling code here:
}
private void jTextField2ActionPerformed(java.awt.event.ActionEvent evt) {
String text2 = jTextField2.getText(); //TODO add your handling code here:
}
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
if (text1 and text2 != <numeric number>){
JOptionPane.showConfirmDialog(null, "Please enter numbers only", "naughty", JOptionPane.CANCEL_OPTION);
}
//First we define float variables.
float num1, num2, result;
//We have to parse the text to a type float.
num1 = Float.parseFloat(jTextField1.getText());
num2 = Float.parseFloat(jTextField2.getText());
//Now we can perform the addition.
result = num1+num2;
//We will now pass the value of result to jTextField3.
//At the same time, we are going to
//change the value of result from a float to a string.
jTextField3.setText(String.valueOf(result));
//TODO add your handling code here:
}
Svp aider. En passant pourquoi est-ce que mon NetBeans garder, m'informant qu'il ne reconnaît pas le "JOptionPane de la Commande"?
importer java.swing.JOptionPane;
si vous avez besoin de texte mis en forme, utiliser JFormattedTextField
si vous avez besoin de texte mis en forme, utiliser JFormattedTextField
OriginalL'auteur JavaNoob | 2010-08-05
Vous devez vous connecter pour publier un commentaire.
Float.parseFloat()
va jeter unNumberFormatException
si leString
n'est pas numérique et ne peut pas être analysé en uneFloat
. Vous pouvez ajouter untry-catch
bloc pour vérifier cette condition:OriginalL'auteur samitgaur
Si alphanumérique d'entrée n'est pas valide pour le composant Swing, en premier lieu, puis, au lieu de valider ce post-entrée, il convient de restreindre le composant d'accepter seulement un certain format dans la première place.
Cela dit, vous pouvez, entre autres choses, l'utilisation
Integer.parseInt(String s)
pour voir si une chaîne de caractères arbitraire peut être analysé dans unint
; la méthode renvoieNumberFormatException
si elle ne peut pas. Il y a aussi desDouble.parseDouble
, etc.Voir aussi
Questions connexes
java.util.Scanner
optionOriginalL'auteur polygenelubricants
OriginalL'auteur Borealid
Essayez ceci:
Pour le rendre plus agréable, utilisez JOptionPane (il est de plus en plus interactif)
OriginalL'auteur Saurabh Jain
Pourquoi le commentaire de votre propre réponse ?
OriginalL'auteur Nilkanth vithani
Relativement ancienne question, mais j'ai pensé que je prendrais une chance, pour peut-être aider au hasard des Recherches Google.
Une autre approche que quelqu'un pourrait la prendre pour minimiser code et de réduire le nombre de classes est d'ajouter un
KeyListener
pour la keyType de l'événement et de vérifier pour la Char valeur. Ce n'est pas très portable (vous ne pouvez pas utiliser spécifique à la région la mise en forme numérique de la ponctuation), mais cela pourrait être très utile pour la droite des nombres entiers.Vous pouvez également faire une longueur relative ici:
Vous pouvez également ajouter un écouteur d'événement afin de valider l'ensemble entier pour la poursuite du traitement (le nombre doit être > 800 et < 5220 par exemple).
Un bon endroit pour ce serait sur la focusLost événement(?).
Si vous faites ces fonctions fréquemment, il serait préférable de sous-classe de la classe component swing jtextfield pour fournir cette fonctionnalité.
EDIT: à l'Aide de
Character.isLetter(keyEvent.getKeyChar())
est encore plus clair.Une explication serait sympa d'aider à améliorer nos processus?
OriginalL'auteur Jaymes Bearden