尝试将String转换为Integer时抛出错误

时间:2015-01-08 07:50:44

标签: java

我试图在我的代码中将字符串解析为整数,但它给我一个错误。 见下面是我的代码:

String phy=(String)map.get("hw.physmem");
int mem_phys=Integer.parseInt(phy);
String page=(String)map.get("hw.pagesize");
int pagesize=Integer.parseInt(page);
System.out.println("*******************************************");
System.out.println("Physmem ::: "+mem_phys);
System.out.println("Pagesize ::: "+pagesize);

我知道String变量

的值
map.get("hw.physmem"); returns 1060528128
map.get("hw.pagesize"); returns 4096

但是,当我尝试将String的值解析为int时,会抛出如下错误:

Exception in thread "main" java.lang.NumberFormatException: For input string: " 1060528128"
        at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
        at java.lang.Integer.parseInt(Integer.java:447)
        at java.lang.Integer.parseInt(Integer.java:497)
        at FreeBsd.main(FreeBsd.java:33)

我无法找到错误,请分享您对此问题的看法......

3 个答案:

答案 0 :(得分:5)

您可以从错误消息中看到您尝试解析的字符串有一个前导空格 - " 1060528128"

在解析之前尝试修剪空格:

int mem_phys=Integer.parseInt(phy.trim());
int pagesize=Integer.parseInt(page.trim());

答案 1 :(得分:0)

您需要在转换前修剪任何前导零: 因此,您的例外状态1060528128应为1060528128

答案 2 :(得分:0)

String.trim()

int mem_phys=Integer.parseInt(phy.trim());
int pagesize=Integer.parseInt(page.trim());

而不是

int mem_phys=Integer.parseInt(phy);
int pagesize=Integer.parseInt(page);