我有一个字符串数组,其中一个索引特别是第7个,需要是一个双数,所以我可以使用条件。
while (s.hasNextLine()) {
String customer = s.nextLine();
String[] fields = customer.split("\\|");
double score = Double.parseDouble(fields[7]);
}
也尝试了一下,但没有运气。仍然是同样的错误。
while (s.hasNextLine()) {
String customer = s.nextLine();
String[] fields = customer.split("\\|");
if (Double.parseDouble(fields[7]) > 5.00) {
字段[7]包含输入文件中的所有数字但是如何使它们成为double值,以便在if语句中使用条件。但是,所有其他索引必须保持字符串。
执行此操作会导致此错误:
Exception in thread "main" java.lang.NumberFormatException: For input string: "$280.80"
at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:2043)
at sun.misc.FloatingDecimal.parseDouble(FloatingDecimal.java:110)
at java.lang.Double.parseDouble(Double.java:538)
at CollectionLetter.main(CollectionLetter.java:13)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147)
解决方案:答案是我曾经有过货币符号,我仍然试图让它仍然存在,我只是简单地使用了:
if (Double.parseDouble(fields[7].replace("$","")) > 5.00) {
谢谢大家!
答案 0 :(得分:0)
如果我正确理解您的问题,您必须尝试检查字符串中的double值。
在这种情况下,需要Double.parseDouble。
if(Double.parseDouble(fields[7]) ... )
答案 1 :(得分:0)
请正确处理解析货币。虽然你的字符串是" $ 123456.78",但在世界其他地方"₹3,00,00,000"或" R $ 399,00"是有效金额。
当你在日本的朋友运行你的代码时,使用NumberFormat来避免事情的发生。
如果你不认为所有真正需要的东西,这里是鲍里斯'快捷方式:https://stackoverflow.com/a/23991368/3430807