Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 能否将字符串数组的特定索引解析为双倍数?_Java - Fatal编程技术网

Java 能否将字符串数组的特定索引解析为双倍数?

Java 能否将字符串数组的特定索引解析为双倍数?,java,Java,我有一个字符串数组,其中一个索引,特别是第七个,需要是一个双倍数,这样我就可以对它使用一个条件 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("\\|");

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]包含输入文件中的所有数字,但如何使它们成为双值,以便在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) {

谢谢大家

如果我正确理解了您的问题,您必须尝试检查字符串中的双精度值


在这种情况下,需要Double.parseDouble

if(Double.parseDouble(fields[7]) ... )

请正确处理解析货币。虽然您的字符串为“$123456.78”,但在世界其他地区”₹3,00,00000”或“399,00雷亚尔”为有效金额

当你在日本的朋友运行你的代码时,使用它可以避免事情发生爆炸


如果您不认为所有这些都是真正需要的,下面是Boris的快捷方式:

Double.parseDouble()为什么不使用正则表达式?您需要删除字符串中的第一个字符-
“$”
,然后再将其用作输入。OMG,我没有想过!非常感谢@GendarmeI尝试了一下,但得到了我的帖子编辑中包含的错误是的,我真是一个傻瓜,因为我没有考虑货币标记是错误解析为双精度的原因。你的答案比另一个答案更正确,所以我把它给你。