Java 将TextField值转换为Int
我有一个文本字段,可以在其中键入值;我需要将键入的值转换为Int,并用S.O.Println显示它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
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(" ", ""));