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尝试了一下,但得到了我的帖子编辑中包含的错误是的,我真是一个傻瓜,因为我没有考虑货币标记是错误解析为双精度的原因。你的答案比另一个答案更正确,所以我把它给你。