我写了一个split函数,它的构造函数接受一个String对象CCD_ 1。然后使用split((函数将其拆分为三部分。然后将这三个新的String Object转换为三个基元类型double。我想对这些双值执行一些算术运算,但它显示异常如下——
Exception in thread "main" java.lang.NumberFormatException: empty String
at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1842)
at sun.misc.FloatingDecimal.parseDouble(FloatingDecimal.java:110)
at java.lang.Double.parseDouble(Double.java:538)
拆分功能如下——
public class Split {
public Split(String str){
Double[] lla = new Double[3];
String[] parts=str.split("t");
lla[0] = Double.parseDouble(parts[0]);
lla[1] = Double.parseDouble(parts[1]);
lla[2]= Double.parseDouble(parts[2]);
lla[0]+=123.567;
lla[1]+=12.456;
lla[2]+=76.5678;
System.out.println(lla[0]);
System.out.println(lla[1]);
System.out.println(lla[2]);
System.out.println();
}
}
请帮我解决这个问题。感谢
如果您使用的是java-8,请替换
String[] parts = str.split("t")
具有以下
String[] parts = Stream.of(str.split("\s")) // Split at each whitespace
.filter(x -> !x.isEmpty()) // Exclude empty Strings
.toArray(String[]::new); // Makes a new String array of it
为了确保不为空,String进入构造函数的解析部分。
此错误表示其中一个:parts[0]
、parts[1]
、parts[2]
是空的String
,并且不包含double
值。因此Java
无法将其解析为Double
。检查要拆分的输入(For Example: 21.316621 87.01393 9830.686907)
0以创建parts
数组。
如果您不能修改输入,那么在解析parts
数组之前,请检查并删除它们中的空值。
在这里检查一个工作和不工作的示例(抛出相同的错误(,以获得相同的方法但不同的输入。