我的问题是在代码中它不接受浮点数字 所以,我应该在代码部分进行任何更改,请建议我..
{ 线程“main”中的异常java.lang.NumberFormatException:对于输入字符串:“320.9”
at java.lang.NumberFormatException.forInputString(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at org.lrap.otc.OTCVerification.verifyOtc(OTCVerification.java:26)
// code part // int bill = Integer.parseInt(strArray [2] .trim());
at org.lrap.main.Main.run(Main.java:68)
// code part // boolean retVal = OTCVerification.getOTCVerificationObj()。verifyOtc(message);
at org.lrap.main.Main.main(Main.java:111)
只需调用run函数 } 感谢所有协助我的人。: - )
答案 0 :(得分:1)
输入字符串:“320.9”
at java.lang。 Integer.parseInt (未知来源)
使用Double.parseDouble
解析包含分数的数字。不是Integer.parseInt
。
如果输入可能不是机器格式的数字,那么您应该使用DecimalFormat.parse
和适当的Locale来识别使用本地约定格式化的数字(例如欧洲部分地区的320,9)。
答案 1 :(得分:0)
好吧,如果你想要一个浮点数,请使用Double.parseDouble
或new BigDecimal
。
double target = Double.parseDouble(theString);
// Or
BigDecimal target = new BigDecimal(theString);
如果您需要整数,请使用String#indexOf
查找.
,然后使用String#substring
仅获取.
之前的数字,并继续使用{{1} }}
Integer.parseInt
或者,正如Mike Samuel在下面的评论中指出的那样,使用int index = theString.indexOf('.');
if (index >= 0) {
theString = theString.substring(0, index);
}
int target = Integer.parseInt(theString);
然后转换为Double.parseDouble
:
int
答案 2 :(得分:0)
Integer.parseInt(String s)
用于将有效字符串转换为整数。该值应介于-2,147,483,648到2,147,483,647之间。它不接受任何浮点数。
要转换为浮点数,您可以使用Double.parseDouble or new BigDecimal.
答案 3 :(得分:0)
要转换“浮点数”,您还应该知道使用的NumberFormat
。如果要转换字符串“320.9”,则在大多数区域设置中都可以。如果您的程序在“法语”机器上运行,则浮点数可能会显示为“320,9”。
Double.parse仅适用于“。” as delimiter(正确地说,它取决于sun.misc.FloatingDecimal.readJavaFormatString(String in))。所以,如果你可以依靠这个分隔符,你可以使用Double.parse
如果您必须处理这两种情况,可以使用以下内容:
final String num = "320,9";
final NumberFormat nf_french = NumberFormat.getInstance(Locale.FRENCH); // French Number Format (= xxx,yyy)
final double result_french = nf_french.parse(num).doubleValue(); // => 320.9
final NumberFormat nf_us = NumberFormat.getInstance(Locale.US); // US Number Format (= xxx.yyy)
final double result_us = nf_us.parse(num).doubleValue(); // => 3209.0 !!