Dies ist ein Ausschnitt meiner TXT-Datei "Q.txt".Textdatei zu arrayList lesen und sortieren
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
Ich muss meine Textdatei "Q.txt", die ein Doppel und eine Zeichenfolge enthält, sortieren. Es wurde getrennt mit ":" und am Ende jeder Phrase gibt es ("^ FinishedLine"). Wenn ich das ausführe, ist alles, was es vorkommt, ein Fehler "NumberFormatException: leere Zeichenfolge".
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());
}
}
}
Mögliches Duplikat von [wie man eine txt-Datei liest, die eine Matrixform von Daten enthält, in ein zweidimensionales Array mit denselben Dimensionen wie in der Datei mit Java] (http://stackoverflow.com/questions/5828491/how-to-read- a-txt-Datei-Matrix-Form-von-Daten-in-2d-Array-von-gleichen-dime) –
@hutcec, sicher sein, dass Ihre 3. Zeile ist keine neue Zeile für Ihren Code, oder wird – cralfaro
fehlschlagen Sie können versuchen, Double.valueOf() anstelle von parseDouble() zu verwenden. Es wird keine Ausnahme ausgelöst (wenn es wirklich Ursache für Ihre Probleme hier ist) – Araneo