我有一个有数字的字符串。我必须解析这个字符串并将这些数字存储在int,float等中。相应的
String str = "100,2.0,-100,19.99,0";
我可以在分割后通过Integer.parseInt()
和Float.parseFloat()
执行此操作。但我不能为负数做这件事。它抛出异常java.lang.NumberFormatException
。搜索网络后,我找不到任何解决此问题的方法。
那么如何使用j2me api set解析字符串中的负整数并存储到int中呢?
答案 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);
它会正常工作。