【问题标题】:ParseInt crashes on longer numbersParseInt 在更长的数字上崩溃
【发布时间】:2014-10-20 08:16:31
【问题描述】:

几周后,我终于知道如何通过我的应用解析我的数字。但是现在应用程序在给定以下格式的数字时会崩溃:9283928398293822.483.84.3883

我只是不知道如何让它接受那些数字格式。问题与条形码扫描仪有关,所以我真的需要它来接受这些数字格式。

我用来解析的代码是:

JSONObject c = user.getJSONObject(Integer.parseInt(xyz)-1);

【问题讨论】:

    标签: java android json parseint


    【解决方案1】:

    对于更长的数字,您应该使用Long.parseLong() 而不是Integer.parseInt()

    下一个案例 22.483.84.3883 不是数字。你会从这里得到NumberFormatException

    你可以使用

    try{
       long val=Long.parseLong("xxxx")
    }catch(NumberFormatException e){
       // exception 
    }
    

    如果您想将22.483.84.388322-483-84-3883 视为有效案例,则需要先替换.-

    例如:

     long val=Long.parseLong("22.483.84.3883".replaceAll("\\.", ""));
     System.out.println(val);
    

    【讨论】:

    • 你知道我怎样才能让它接受 22.483.84.3883 吗?还是包含破折号的?
    • 对不起,我不明白,我需要更换什么才能使其生效?
    【解决方案2】:

    请改用Long.parseLong。 Integer 类型不能包含这么大的数字(Integer 的最大值为 2^31-1,远小于 92839283982938)。此外,您应该消除这些点。

    试试:

    JSONObject c = user.getJSONObject(Long.parseLong(xyz.replace(".",""))-1);
    

    【讨论】:

    • 它是否也接受具有多个断点的数字,例如 .?还是破折号?
    • @derhak 您应该在解析数字之前删除断点。
    猜你喜欢
    • 1970-01-01
    • 2011-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-17
    • 2017-04-15
    • 1970-01-01
    相关资源
    最近更新 更多