Java-Text-Eingabe: Wie Ignoriere Zeilen, beginnend mit bestimmten Zeichen, die in Ihnen?
Ich grundsätzlich ignorieren möchten bestimmte Zeilen mit Zeichen in Ihnen, wie wenn es eine Linie
//hello, i'm bill
Möchte ich diese Zeile ignorieren, während Sie Lesen, denn es enthält die Zeichen "//". Wie kann ich das tun? Ich habe versucht, die Methode skip(), aber es gibt mir Fehler.
public String[] OpenFile() throws IOException {
FileReader reader = new FileReader(path);
BufferedReader textReader = new BufferedReader(reader);
int numberOfLines = readLines();
String[] textData = new String[numberOfLines];
int i;
for (i=0; i<numberOfLines; i++) {
textData[i] = textReader.readLine();
}
//close the line-by-line reader and return the data
textReader.close();
return textData;
}
int readLines() throws IOException {
FileReader reader = new FileReader(path);
BufferedReader textReader = new BufferedReader(reader);
String line;
int numberOfLines = 0;
while ((line = textReader.readLine()) != null) {
//I tried this:
if (line.contains("//")) {
line.skip();
}
numberOfLines++;
}
reader.close();
return numberOfLines;
}
Update: HIER ist MEINE MAIN-METHODE:
try{
ReadFile files = new ReadFile(file.getPath());
String[] anyLines = files.OpenFile();
}
Wie funktioniert das sogar kompilieren? Ich kann nicht finden, eine "skip" - Methode der String-Klasse.
Sie erkennen, dass die Datei gelesen wird zweimal, in den code eingefügt nach dem Bearbeiten?
Die
Es Lesen nicht die Datei zweimal, nur zählt die Anzahl der Zeilen einer Datei und gibt Sie aus (in meiner main-Methode).
Sie sind, so Lesen Sie es zweimal. Zunächst zählen Sie die Anzahl der Zeilen (da wo die Lösungen gepostet werden, zählen nicht die
Sie erkennen, dass die Datei gelesen wird zweimal, in den code eingefügt nach dem Bearbeiten?
Die
readLines()
Methode wäre genauer genannt countLines()
oder countNonCommentLines()
. Diese ganze übung wäre übersichtlicher & schneller durch das Lesen der Zeilen, dass eine Struktur zu erweitern, wie gebraucht, wie ein ArrayList
, da es scheint, dass Sie nur verwenden Sie die count-zu etablieren, der die Größe eines String[]
.Es Lesen nicht die Datei zweimal, nur zählt die Anzahl der Zeilen einer Datei und gibt Sie aus (in meiner main-Methode).
Sie sind, so Lesen Sie es zweimal. Zunächst zählen Sie die Anzahl der Zeilen (da wo die Lösungen gepostet werden, zählen nicht die
//
Linien, wie Sie wollen), dann gehen Sie zurück zu Ihrem Haupt-Funktion und die Ausgabe aller Zeilen (da wo die Lösungen die gepostet wurden waren nicht angewendet). Jedoch wurden die Linien miscounted, so dass Sie nur die ersten N Zeilen, wobei N die Anzahl der nicht-//
Linien. Dies erklärt Ihre "cutoff".InformationsquelleAutor lrvilnius | 2011-05-23
Du musst angemeldet sein, um einen Kommentar abzugeben.
beachten Sie, dass
continue
könnte scheinen, ein bisschen springen und wie anfällig für Kritikedit hier ist, was Sie nach sind (Hinweis: dies muss nicht die Methode countLines)
goto
im Kontext wie diesem nicht verstehen, warumgoto
wurde als schädlich. Dijkstra war gegen uneingeschränktgoto
.deine Methode funktioniert auch nicht.
+1 ich Liebe
continue
persönlich. nicht ganz so schlimm wiegoto
denke ich nicht. Ich setze es mehr aufbreak
das ist definitiv nicht so anfällig für Kritik, da es definitiv der beste Weg, um am Ende eine Schleife in der Mitte setzen.Continue
ist 100% perfekt gültig ist und vergleichen Sie es mitgoto
ist, es zu tun, einen Bärendienst.Continue
ist so ziemlich das Analogon desbreak
freak: Dank einem Haufen! Es hat geklappt 🙂
InformationsquelleAutor ratchet freak
Als Andrew Thompson weist darauf hin, es würde am besten sein, Lesen Sie die Datei zeilenweise in einer ArrayList. Pseudo-Code:
UPDATE, um Ihre tatsächlichen code:
In Ihrem ReadLines () - Funktion:
Grundsätzlich bist du auf dem richtigen Weg.
Hinweis: Sie können daran interessiert sein, die startsWith() string-Funktion
Haben Sie nach Ihrem tatsächlichen code oben? Auch können Sie erklären, den Zweck des Codes? Ist es zu Zeilen, die Zeilen der Ausgabe, dump-Zeilen in einen Puffer?
Was meinst du, "ausgegeben"? Deinem code-Beispiel nicht enthalten string-Ausgabe. Wenn @hamlin11 oder @ratchet code ist nicht für Sie arbeiten, Sie sind die Anpassung falsch.
In meiner main-Methode habe ich die Ausgabe des strings mit System.aus.println durch erstellen eines Arrays. Die, die ich jetzt spreche, ist ein Lesen der Datei-Klasse, die ich erstellt.
Ihre Methode tatsächlich schneidet das Ende... seltsam...
InformationsquelleAutor Brian Webster