你能解析一个String数组的特定索引到一个双数吗?

时间:2017-03-27 17:55:52

标签: java

我有一个字符串数组,其中一个索引特别是第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) {

谢谢大家!

2 个答案:

答案 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