将TextField值转换为Int

时间:2011-01-20 22:21:11

标签: java eclipse int

我有一个TextField,可以输入值;我需要将输入的值转换为Int并使用S.O.Println显示它。

EDIT:

我现在试过了:

try {
int i = Integer.parseInt(myText.getText());
System.out.println("This is an integer " + i);              
}
catch (NumberFormatException x) {
System.out.println("Error : "+ x.getMessage());
}

但它给了我:

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

任何想法。

EDIT:

就是这样:

double d = Double.parseDouble(myText.getText());
int i = (int)d;

5 个答案:

答案 0 :(得分:3)

您似乎使用逗号作为分隔符,而不是点。无论如何,您将无法将其解析为int。您需要Double.parseDouble(..)

使用可以使用与当前语言环境对应的NumberFormat来解析输入。

如果您正在使用SWT(标记的日食) - 我认为您可以通过在文本字段中添加VerifyListener来限制可能的字符。在您的监听器中,如果允许输入,则在传递的事件上调用doit()

如果使用AWT(TextField是awt的文本组件) - 请参阅something like this

答案 1 :(得分:0)

您尝试将字符串“11,5”解析为整数。它绝对不是整数。因此抛出异常。

您可以尝试使用Double.parseDouble(),结果取决于您的Locale。如果你是英语语言环境,它需要点(。)而不是昏迷,所以数字应该看起来像11.5

答案 2 :(得分:0)

逗号给你一个解析错误。如果需要逗号,可以将其用作分隔符并分别解析双方。

以下是在字符串中分隔两个逗号分隔值的示例。

String str = "1,2,3,4";
StringTokenizer st = new StringTokenizer(str, ",");
while (st.hasMoreTokens()) {
     System.out.println(st.nextToken());
}

输出结果为:

1
2
3
4

答案 3 :(得分:0)

11,5不是Java可以在没有其他交互的情况下解析的数字。您可以用小数点替换逗号,同时删除任何空格(取决于您的语言环境):

Double.parseDouble(myText.getText().replaceAll(",", ".").replaceAll(" ", ""));

注意:

您不能将逗号用作千位分隔符。

答案 4 :(得分:-1)

那是因为myText.getText()11,5(不是数字)而不是11.5(双倍)。

尝试做,

Double.parseDouble(myText.getText().replaceAll(",", "."));

这会将,替换为.

或者,使用NumberFormat进行数字转换。


此外,我注意到您在解析Integer.parseInt()个数字时正在使用double。这就是你抛出异常的原因。

您应该使用NumberFormat.getInstance(locale).parse(myText.getText())来获得所需的结果。不要忘记parse()会返回Number个对象,所以为了得到一个,请执行以下操作:

double d = NumberFormat.getInstance(locale).parse(myText.getText()).doubleValue();