Java:将字符串转换为整数时的NumberFormatException

时间:2012-05-17 06:28:18

标签: java

我想从文本框中检索值并将其转换为整数。我编写了以下代码,但它抛出了NumberFormatException

String nop = no_of_people.getText().toString();
System.out.println(nop);
int nop1 = Integer.parseInt(nop);
System.out.println(nop1);

第一次调用System.out.println会打印出数字,但转换为整数会产生异常。我做错了什么?

4 个答案:

答案 0 :(得分:6)

请注意,如果字符串中有任何空格,则解析将失败。您可以先使用.trim方法修剪字符串,也可以使用.replaceAll("\\s+", "")进行全部替换。

如果您想避免此类问题,我建议您使用Formatted Text FieldSpinner

后面的选项将保证您有数值,并且应该避免使用try catch块。

答案 1 :(得分:0)

您的TextBox可能包含带空格的数字。尝试按照编辑的代码。您需要在将TextBox值转换为Integer之前修剪它。还要确保该值不超过整数范围。

String nop=(no_of_people.getText().toString().trim());
System.out.println(nop);
int nop1 = Integer.parseInt(nop);
System.out.println(nop1);

答案 2 :(得分:0)

试试这个:

int nop1 = Integer.parseInt(no_of_people.getText().toString().trim());
System.out.println(nop1);

答案 3 :(得分:0)

我建议先将所有non-digit characters替换为字符串,然后再转换为int

replaceAll("\\D+", "");

您可以使用此代码:

String nop=(no_of_people.getText().toString().replaceAll("\\D+", ""));
System.out.printf("nop=[%s]%n", nop);
int nop1 = Integer.parseInt(nop);
System.out.printf("nop1=[%d]%n", nop1);