无法在Java中将String转换为int

时间:2014-09-20 07:12:54

标签: java

在我的程序中,我需要将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)

有人可以帮我解决吗?感谢。

3 个答案:

答案 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,直到找到一个数字或字符串中只剩下一个字符。第二次检查可防止异常并返回标记值。检查此标记值将拦截运行时异常。 注意:我在评论栏中写了这段代码,请原谅任何小错误,我很乐意纠正。