这是我的txt文件“Q.txt”的片段。
12.54778255173505 : ^FinishedLine
15.416218875438748 :
^FinishedLine
16.245508427720914 : ^FinishedLine
9.595696051997852 : &^FinishedLine
11.971100145959943 : ! '^FinishedLine
11.678678199807727 : " $^FinishedLine
14.905855346233682 : # %^FinishedLine
15.98343143372184 : $ "^FinishedLine
16.053542916378102 : % #^FinishedLine
我需要对包含double和字符串的文本文件“Q.txt”进行排序。 它已使用“:”分隔,并且在每个短语的末尾有(“^ FinishedLine”)。当我运行它时,所有它出现的是“NumberFormatException:空字符串”错误。
public class Sorting {
public static void sort() throws IOException {
Scanner s = new Scanner(new File("Q.txt"));
ArrayList<Qpair> set = new ArrayList<>();
String line = "";
while (s.hasNext()) {
String[] parts = line.split(" : ");
set.add(new Qpair(Double.parseDouble(parts[0]), parts[1]));
s.useDelimiter("^FinishedLine");
}
s.close();
System.out.println(set);
}
private static class Qpair{
private double d;
private String s;
public Qpair(double d, String s){
this.d = d;
this.s = s;
}
public double getDouble(){
return d;
}
public String getString(){
return s;
}
}
private static class QpairCompare implements Comparator<Qpair>{
public int compare(Qpair x, Qpair y){
return (int) (x.getDouble() - y.getDouble());
}
}
}
答案 0 :(得分:0)
据我所知:您正在将line
设置为空字符串。您输入while
循环而不更改line
。您将此空字符串拆分为:
。我承认我必须尝试才能确定:它产生一个1个元素的数组,一个空字符串。您尝试将此数组中的空字符串解析为double。
你告诉我们你得到NumberFormatException: empty string
。听起来像是和我达成协议。
我希望你能弄清楚缺少哪些代码行以及应该在哪里插入它?