2015-01-08 57 views
0

我试图在我的代码中将字符串解析为整数,但它抛出错误。 请参见下面是我的代码:当我尝试将字符串转换为整数时抛出一个错误

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); 

我知道这两个字符串变量

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

但是,值当我尝试解析字符串的值来诠释其抛出类似下面的错误:

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) 

我找不到错误,请分享你的想法,这个问题...

+5

有没有在你的电话号码字符串中的前导空格.. –

+3

非常周到JDK开发人员将错误消息中的引号包含在内。否则这将很难发现。 – Thilo

+0

你从哪里填充这张地图,因为它包括不需要的空间,为什么你不使用泛型? – chrylis

回答

5

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

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

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

您需要在转换之前删除任何前导零: 因此,您的例外状态1060528128应该是1060528128

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); 
相关问题