-3

我的问题是在代码中它不接受浮点数所以我应该对代码部分进行任何更改请建议我..

{ 线程“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)

//代码部分//int bill=Integer.parseInt(strArray[2].trim());

at org.lrap.main.Main.run(Main.java:68)

//代码部分//boolean retVal=OTCVerification.getOTCVerificationObj().verifyOtc(message);

at org.lrap.main.Main.main(Main.java:111)

只是调用运行函数}感谢所有帮助我的人。:-)

4

4 回答 4

1

对于输入字符串:“320.9”

在 java.lang。Integer.parseInt (未知来源)

用于Double.parseDouble解析带分数的数字。不是Integer.parseInt

如果输入可能不是机器格式的数字,那么您应该使用DecimalFormat.parse适当的区域设置来识别使用本地约定格式化的数字(例如欧洲部分地区的 320,9)。

于 2013-04-03T07:27:20.437 回答
0

要转换“浮点数”,您还应该注意使用的NumberFormat. 如果您要转换字符串“320.9”,则在大多数语言环境中都可以。如果您的程序在“法国”机器上运行,则浮点数可能以“320,9”的形式出现。

Double.parse 仅适用于“。” 作为分隔符(正确地说,它取决于 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 !!
于 2013-04-03T10:07:33.930 回答
0

好吧,如果你想要一个浮点数,请使用Double.parseDoubleor new BigDecimal

double target = Double.parseDouble(theString);
// Or
BigDecimal target = new BigDecimal(theString);

如果您想要一个整数,请使用String#indexOf查找.,然后使用String#substring仅获取 之前的数字.,然后继续使用Integer.parseInt

int index = theString.indexOf('.');
if (index >= 0) {
    theString = theString.substring(0, index);
}
int target = Integer.parseInt(theString);

或者,正如Mike Samuel在下面的评论中指出的那样,使用Double.parseDouble然后转换为int

int target = (int)Double.parseDouble(theString);
于 2013-04-03T07:27:46.233 回答
0
Integer.parseInt(String s) 

用于将有效字符串转换为整数。值应介于 -2,147,483,648 到 2,147,483,647 之间。它不会接受任何浮点数。

要转换为浮点数,您可以使用Double.parseDouble or new BigDecimal.

于 2013-04-03T07:32:03.863 回答