[英]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.