如何用j2me api解析包含负数的字符串?

时间:2012-02-02 13:16:35

标签: java string java-me

我有一个有数字的字符串。我必须解析这个字符串并将这些数字存储在int,float等中。相应的

String str = "100,2.0,-100,19.99,0";

我可以在分割后通过Integer.parseInt()Float.parseFloat()执行此操作。但我不能为负数做这件事。它抛出异常java.lang.NumberFormatException。搜索网络后,我找不到任何解决此问题的方法。

那么如何使用j2me api set解析字符串中的负整数并存储到int中呢?

5 个答案:

答案 0 :(得分:17)

与正数相比,解析负数应该没什么特别的。

float f = Float.parseFloat("-1.0");

上面的代码应该可以正常工作。

可能错误的代码,是你试图用错误的小数分隔符解析浮点数。如果您的语言环境有.作为小数分隔符,则上面的代码就可以了。但是,如果您的语言环境具有,作为小数分隔符,则解析将失败(使用NumberFormatException)。

因此,请确保正确拆分原件,并且拆分后的每个部件都采用有效格式(例如使用正确的小数分隔符)。

更新
如果您想知道如何使用特定区域设置解析数字,您可以查看this question

答案 1 :(得分:2)

我今天遇到了类似的问题,问题是输入字符串中的减号实际上是一个m-dash字符。那太讨厌了!所以这绝对值得一试。

答案 2 :(得分:1)

澄清:嗯,我以为你想区分int和float。只需Float.parseFloat(..)即可,不需要进行contains测试。 :) 误读!

    String str = "100,2.0,-100,19.99,0";
    String[] ns = str.split(",");
    for(String s: ns){
        if(s.contains("."))
            System.out.println("Float: "+ Float.parseFloat(s));
        else
            System.out.println("Int: "+ Integer.parseInt(s));
    }

输出

Int: 100
Float: 2.0
Int: -100
Float: 19.99
Int: 0

更新所以:

    String str = "100,2.0,-100,19.99,0";
    String[] ns = str.split(",");
    for(String s: ns)
            System.out.println("Float: "+ Float.parseFloat(s));

也有效。

答案 3 :(得分:0)

多奇怪,可能是编码问题。 Integer.parseInt()应该使用正数和负数以及其他类似的方法(Float.parse ...)。 您可以做的是在解析之前检查符号' - '或'+'并在解析后分配符号。 这种方法有其优点,就好像你收到带有“+”符号的数字一样,标准的Integer.parseInt将不起作用。

答案 4 :(得分:0)

您可以通过分隔符','并检查是否有负号,因此将数字乘以-1或按

进行
Float parseFloat(str);

它会正常工作。