2016-04-04 7 views
-3

Showing my current progressJava keine andere Zeilen in Textdatei

Ich bin nicht in der Lage zu lesen, um das Programm zu machen lasen mehr als die erste Textzeile in s.dat in diesem Fall.

Gibt es etwas, das ich vermisse? Jede Hilfe wird sehr geschätzt.

+1

Postleitzahl, keine Bilder. Wir können Bilder nicht in unsere eigenen Editoren kopieren/einfügen – AJNeufeld

+0

Und ... Willkommen bei StackOverflow! – AJNeufeld

+1

Veröffentlichen Sie Ihren Code nicht nur als Link, da Personen mit ähnlichen Problemen nicht in der Lage sind, Ihre Frage und mögliche Lösung für ihre Probleme zu finden (was eine Art Grundidee von Stack Overflow ist), nur basierend auf diesem Link. Und [schreibe keinen Text als Bild] (http://meta.stackoverflow.com/a/285557/1393766) – Pshemo

Antwort

1

versuchen, etwas wie folgt aus:

//get the file location 
    String filePath = "somefilepath.txt"; 

    //catch file IO errors 
    try { 
     //return the contents of the file 
     String[] lines = Files.readAllLines(Paths.get(filePath)) 
    } 

Es wird auf die variable Linien ein Array aller String Zeilen in der Datei zuordnen. Dann können Sie in dieses Array indizieren, um das zu erhalten, was Sie brauchen, oder es durchlaufen zu lassen.

EDIT: es ohne Arrays zu tun siehe diesen Link:

http://www.programcreek.com/2011/03/java-read-a-file-line-by-line-code-example/

+0

Für meine Aufgabe haben wir Arrays noch nicht gelernt, also kann ich sie nicht benutzen. Gibt es noch andere? Weg? –

+0

@GeraldLim Bearbeitete meine Antwort – nhouser9

1

Sie tun, wenn ..else Aussage falsch Entweder Sie kehren sowohl die Schleife in dem Fall zu funktionieren oder brechen Sie werden gehen, um die Schleife nach der ersten Ausführung zu beenden, deshalb ist dies passiert.

1

Ihre while-Schleife liest (ungefähr):

while (more lines) { 
    if (match) { 
      return; 
    } else { 
      break; 
    } 
} 

Ihre Schleife wird nie mehr als einmal ausführen.

Entfernen Sie die else Klausel und setzen Sie die println("Not found"); nach der Schleife beendet.

0

Ihr Code liest nur die erste Zeile, da Sie return in if block und break in else block gesetzt haben. Es wird in beiden Fällen aus der Schleife kommen.

Entfernen Sie die Rückgabeanweisung vom if-Block.

+0

Eigentlich entfernen Sie die "Pause" von der "else" -Klausel; Das OP möchte eine Schleife durchlaufen, bis es gefunden wird, keine Schleife, wenn es gefunden wird. – AJNeufeld

+0

Ich entfernte den Bruch von der else-Klausel am unteren Rand, aber es druckt jetzt Keine Informationen gefunden für jede Station, die nicht übereinstimmt. Wie würde ich die mehreren Druckzeilen verhindern? Ich dachte, Pause würde helfen, die Zeile nur einmal zu drucken. –

+0

Sie wollen überhaupt keine else-Klausel. Löschen Sie den 'break' und verschieben Sie den' println ("No information") 'nach draussen (unter) den Loop. – AJNeufeld

0

Ihre else-Klausel ist falsch, wenn die erste Schleife nicht übereinstimmt, wird sie sofort beendet und tut nichts anderes. sollten Sie nach while-Schleife die Anweisung "Not found ...." drucken.

+0

Danke dafür. Ich habe die Else-Anweisung entfernt und gedruckt, nachdem die Schleife beendet wurde. Ich habe ein anderes Problem mit dem Drucken jedoch, der Abstand druckt als << Abstand:: 0,190 km >> zum Beispiel und ich bin nicht sicher, wie man den Doppelpunkt vor 0.190 entfernt. Irgendwelche Ideen? –

Verwandte Themen