在我的程序中,我需要将String转换为Int。
String str = new String(request.getData());
String [] setting = str.split(" ");
String bs = setting[1];
bs的值为1024,我使用System.out.println
对其进行测试,并在屏幕上显示" 1024"。
但是当我使用
时 int blockSize = Integer.parseInt(bs);
它将向Integer.parseInt
:
Exception in thread "main" java.lang.NumberFormatException: For input string: "1024"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
at java.lang.Integer.parseInt(Integer.java:458)
at java.lang.Integer.valueOf(Integer.java:554)
有人可以帮我解决吗?感谢。
答案 0 :(得分:10)
我怀疑你在字符串bs
中有一些隐藏的unicode字符,你可以删除非数字:
bs = bs.replaceAll("\\D", "");
int blockSize = Integer.parseInt(bs);
上面的代码也会将字符串"1a2"
转换为12
,但这似乎不是你的情况。
答案 1 :(得分:1)
试试这段代码:
String bs = setting[1].trim().toString();
答案 2 :(得分:0)
while( (!bs.matches("\\d+")) && (bs.length > 1))
{
bs = bs.substring(1);
}
if (bs.matches("\\d+")
{
int blockSize = Integer.parseInt(bs);
}
else
{
int blockSize = -1;
}
/* !! Then, check for "-1" in your application of
block size #runtime_exception_prevention */
这将继续根据需要将令人反感的非数字位删除为1,直到找到一个数字或字符串中只剩下一个字符。第二次检查可防止异常并返回标记值。检查此标记值将拦截运行时异常。 注意:我在评论栏中写了这段代码,请原谅任何小错误,我很乐意纠正。