2017-03-28 5 views
-2

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()); 

     } 
    } 

    } 
+0

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) –

+0

@hutcec, sicher sein, dass Ihre 3. Zeile ist keine neue Zeile für Ihren Code, oder wird – cralfaro

+0

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

Antwort

0

Soweit ich sehen kann: Sie sind line auf die leere Zeichenfolge setzen. Sie geben die while Schleife ohne Änderung line ein. Sie teilen diese leere Zeichenfolge unter :. Ich gebe zu, dass ich es ausprobieren musste, um sicher zu sein: Es ergibt ein Array von 1 Element, eine leere Zeichenfolge. Sie versuchen, diese leere Zeichenfolge als Double aus dem Array zu analysieren.

Und Sie sagen uns, Sie erhalten NumberFormatException: empty string. Hört sich nach Zustimmung an.

Ich hoffe, Sie können herausfinden, welche Codezeile fehlt und wo Sie es einfügen sollten?