我在将String转换为Integer时收到NumberFormatException

时间:2013-08-25 21:50:22

标签: java android

我有一个php api,它给我这样的数组:

11%0%0%801%0%0%812%0%0%640%33%6

以上回复将存储在“String a”

try{
    //... Some code of my application which is not relavant to show
    String a = response.toString();
    String tokens = a.split("%");
    for (String str : tokens)
    {
        Log.e("log_tag", str);
    }
    String ds = tokens[0];
    int i_ds = Integer.parseInt(ds);
    Log.e("log_tag", "data is: "+i_ds);
}catch (Exception e) {
     Log.e("log_tag","Error: " + e.toString());
}

我在DDMS中得到了关注:

Tag         Text
log_tag     11
log_tag     0
log_tag     0
log_tag     801
log_tag     0
log_tag     0
log_tag     812
log_tag     0
log_tag     0
log_tag     640
log_tag     33
log_tag     6
log_tag     java.lang.NumberFormatException: Invalid int:"11"

3 个答案:

答案 0 :(得分:3)

我只是复制并粘贴了您的代码,尽管其他评论确实说明了您需要进行此更改的事实:String [] tokens = a.split("%");

看起来php正在传递给你一些有趣的隐藏角色!在11号之前有一个隐藏的字符,我会通过执行以下操作来清理你的字符串

tokens[0].replaceAll("[^0-9]", "");

答案 1 :(得分:0)

String.split返回String[]

替换 String tokens = a.split("%");String[] tokens = a.split("%");

答案 2 :(得分:0)

IT应该

String tokens[] = a.split("%");