Convertir TextField valeur de type Int
J'ai un Champ de texte où je peux le type de valeurs; Et j'ai besoin de convertir la valeur de type Int et de l'afficher avec S. O. Println.
EDIT:
J'ai essayé :
try {
int i = Integer.parseInt(myText.getText());
System.out.println("This is an integer " + i);
}
catch (NumberFormatException x) {
System.out.println("Error : "+ x.getMessage());
}
Mais il me fait :
This is an integer 122 //When I type 122
Error : For input string: "122,5" //When I type 122,5
Error : For input string: "122.5" //When I type 122.5
Toutes les idées.
EDIT:
Ce que c'est :
double d = Double.parseDouble(myText.getText());
int i = (int)d;
Vous devez vous connecter pour publier un commentaire.
Il semble que vous utilisez une virgule comme séparateur, plutôt que d'un point. Et de toute façon, vous ne seriez pas en mesure de l'analyser comme
int
. Vous auriez besoin deDouble.parseDouble(..)
Utiliser pouvez utiliser
NumberFormat
correspondant aux paramètres régionaux en cours afin d'analyser l'entrée.Si vous êtes en utilisant SWT (tagged eclipse) - je pense que vous pouvez limiter les caractères possibles par l'ajout d'un
VerifyListener
dans le champ de texte. Dans votre auditeur, appeldoit()
sur le passé de l'événement si l'entrée est autorisée.Si vous utilisez AWT (
TextField
être awt du composant de texte) - puis voir quelque chose comme ceciVous essayez d'analyser la chaîne "11,5", en tant qu'entier. Ce n'est certainement pas entier. Par conséquent, l'exception est levée.
Vous pouvez essayer d'utiliser des Doubles.parseDouble() et le résultat dépend de vos paramètres Régionaux. Si vous êtes dans les paramètres régionaux anglais, il s'attend à ce point (.) et pas de coma, de sorte que le nombre de toute façon devrait ressembler à 11.5
La virgule est de vous donner une erreur d'analyse. Si vous avez besoin de la virgule, vous pouvez l'utiliser comme un séparateur et d'analyser les deux côtés séparément.
Voici un exemple de séparation de deux valeurs séparées par une virgule dans une chaîne de caractères.
La sortie serait:
11,5
n'est pas un nombre que Java peut analyser sans autre interaction. Vous pouvez remplacer la virgule par un point décimal, avec en enlevant tous les espaces (en fonction de vos paramètres régionaux):Notes:
Vous ne pouvez pas utiliser la virgule comme séparateur de milliers.
C'est parce que la
myText.getText()
est11,5
(pas numérique) et de ne pas11.5
(double).Essayer de faire,
Cela remplace
,
à.
.Sinon, utilise
NumberFormat
pour faire de votre numéro de conversion.Aussi, j'ai remarqué que vous utilisez
Integer.parseInt()
lors de l'analysedouble
numéros. C'est pourquoi vous rencontrez des exceptions levées.Vous devez utiliser
NumberFormat.getInstance(locale).parse(myText.getText())
pour obtenir votre résultat requis. N'oubliez pas queparse()
renvoie uneNumber
objet, afin d'obtenir un double, ce faire:NumberFormat.getInstance()
ouNumberFormat.getInstance(Locale.getDefault())
(locale
dans mon exemple =Locale.getDefault()
).