我试图在我的代码中将字符串解析为整数,但它给我一个错误。 见下面是我的代码:
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)
我无法找到错误,请分享您对此问题的看法......
答案 0 :(得分:5)
您可以从错误消息中看到您尝试解析的字符串有一个前导空格 - " 1060528128"
。
在解析之前尝试修剪空格:
int mem_phys=Integer.parseInt(phy.trim());
int pagesize=Integer.parseInt(page.trim());
答案 1 :(得分:0)
您需要在转换前修剪任何前导零:
因此,您的例外状态1060528128
应为1060528128
。
答案 2 :(得分:0)
int mem_phys=Integer.parseInt(phy.trim());
int pagesize=Integer.parseInt(page.trim());
而不是
int mem_phys=Integer.parseInt(phy);
int pagesize=Integer.parseInt(page);