繁体   English   中英

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

[英]How to parse string containing negative number by j2me api?

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

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

我可以在拆分后通过Integer.parseInt()Float.parseFloat()做到这一点。 但是我不能做负数。 它引发异常java.lang.NumberFormatException 搜索网络后,我找不到该问题的任何解决方案。

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

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

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

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

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

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

更新:
如果您想知道如何使用特定的语言环境来解析数字,则可以查看此问题

我今天也遇到了类似的问题,问题是输入字符串中的减号实际上是一个m-破折号。 太讨厌了! 因此,这绝对值得检查。

澄清:好吧,我认为您想区分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));

也可以。

您可以用定界符','进行分隔,并检查是否有负号,因此将数字乘以-1或乘以

Float parseFloat(str);

它会正常工作。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM