-2
這是我的txt文件「Q.txt」的一個片段。讀取文本文件到arrayList並排序
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
我需要對包含雙精度和字符串的文本文件「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());
}
}
}
[如何將包含矩陣形式的數據的txt文件讀入到與使用java的文件中相同維數的2d數組中]的可能重複(http://stackoverflow.com/questions/5828491/how-to-read- a-txt-file-containing-matrix-form-of-data-into-2d-array-of-same-dime) –
@hutcec,確保你的第三行不是你的代碼的新行,否則會失敗 – cralfaro
您可以嘗試使用Double.valueOf()而不是parseDouble()。它不會拋出異常(如果這真的是你的問題的原因) – Araneo