我想从文本框中检索值并将其转换为整数。我编写了以下代码,但它抛出了NumberFormatException
。
String nop = no_of_people.getText().toString();
System.out.println(nop);
int nop1 = Integer.parseInt(nop);
System.out.println(nop1);
第一次调用System.out.println
会打印出数字,但转换为整数会产生异常。我做错了什么?
答案 0 :(得分:6)
请注意,如果字符串中有任何空格,则解析将失败。您可以先使用.trim
方法修剪字符串,也可以使用.replaceAll("\\s+", "")
进行全部替换。
如果您想避免此类问题,我建议您使用Formatted Text Field或Spinner。
后面的选项将保证您有数值,并且应该避免使用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);