Java 将TextField值转换为Int

Java 将TextField值转换为Int,java,eclipse,int,Java,Eclipse,Int,我有一个文本字段,可以在其中键入值;我需要将键入的值转换为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.getMe

我有一个文本字段,可以在其中键入值;我需要将键入的值转换为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
任何想法

编辑:

就是这样:

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

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

Use可以使用与当前语言环境相对应的
NumberFormat
,以解析输入

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


如果使用AWT(
TextField
作为AWT的文本组件),请参见,这是因为
myText.getText()
11,5
(非数字)而不是
11.5
(双精度)

试着去做

Double.parseDouble(myText.getText().replaceAll(",", "."));
这将
替换为

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


另外,我注意到您在解析
double
数字时使用了
Integer.parseInt()
。这就是为什么会抛出异常

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

double d = NumberFormat.getInstance(locale).parse(myText.getText()).doubleValue();
您尝试将字符串“11,5”解析为整数。它绝对不是整数。因此抛出异常


您可以尝试使用Double.parseDouble(),结果取决于您的语言环境。如果您使用的是英语语言环境,那么它需要的是点(.)而不是昏迷,因此该数字应该看起来像11.5,逗号会给您一个解析错误。如果需要逗号,可以将其用作分隔符并分别解析两边

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

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

1
2
3
4

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

注:


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

这可能是由于区域设置不同造成的。在需要处理本地化问题的应用程序中,您的解决方案是危险的,因为在某些国家,逗号表示千位分隔符并不罕见。这应该使用NumberFormat来处理。语言环境有问题,编译器无法理解语言环境!您可以使用
NumberFormat.getInstance()
NumberFormat.getInstance(Locale.getDefault())
Locale
在我的示例中=
Locale.getDefault()
)。
Double.parseDouble(myText.getText().replaceAll(",", ".").replaceAll(" ", ""));