Probleme mit meinem Programm mit Arraylists, BufferedReader, Methoden und allgemeine Vergesslichkeit, wie Java-Werke
-
04-10-2019 - |
Frage
Ich habe Schwierigkeiten mit einem Programm, dass ich den ganzen Tag gearbeitet. Ich versuche, eine Textdatei zu lesen und jeden Zeile einen nach dem anderen lesen. Nehmen Sie die Linie und machen eine Arraylist der Worte der Zeile. dann unter Verwendung des Index der Array Begriffe mit ihm definieren.
public class PCB {
public static void main(String arg[]) {
read();
}
public static ArrayList read() {
BufferedReader inputStream = null;
ArrayList<String> tokens = new ArrayList<String>();
try {
inputStream = new BufferedReader(new FileReader("processes1.txt"));
String l;
while ((l = inputStream.readLine()) != null) {
Scanner tokenize = new Scanner(l);
while (tokenize.hasNext()) {
tokens.add(tokenize.next());
}
return tokens;
}
} catch (IOException ioe) {
ArrayList<String> nothing = new ArrayList<String>();
nothing.add("error1");
System.out.println("error");
//return nothing;
}
return tokens;
}
}
Der Fehler Ich erhalte ist es nur die erste Zeile liest. Was mache ich falsch? Vielen Dank im Voraus
Lösung
Sie haben "Return Token"; in Ihrer while-Schleife. Scheint, wie die frühe Rückkehr effektiv aus der Verarbeitung in der ersten Zeile schneiden würde.
Andere Tipps
Versuchen Sie, Ihre Schleife der folgenden ändern. Beachten Sie, wie ich die return-Anweisung verschoben.
while ((l = inputStream.readLine()) != null) {
Scanner tokenize = new Scanner(l);
while (tokenize.hasNext()) {
tokens.add(tokenize.next());
}
}
return tokens; // <-- outside the loop
Edit:. Wenn Sie die gesamte Datei lesen möchten, und speichern Sie die Token jeder Zeile in einem separaten Array, dann könnten Sie eine ArrayList
von ArrayList
erstellen
public static ArrayList<ArrayList<String>> tokenizeFile(string filename) {
BufferedReader inputStream = new BufferedReader(new FileReader(filename));
ArrayList<ArrayList<String>> lines = new ArrayList<ArrayList<String>>();
while (true) {
String line = inputStream.readLine();
if (line == null) break;
ArrayList<String> tokens = new ArrayList<String>();
Scanner tokenizer = new Scanner(line);
while (tokenizer.hasNext()) {
tokens.add(tokenizer.next());
}
lines.Add(tokens);
}
return lines;
}
. Hinweis: Meine Java ist rostig
Vereinfachen dieses ...
String l;
while ((l = inputStream.readLine()) != null) {
tokens.addAll(Arrays.asList(l.split(" ")));
}
... erstellt eine Liste aller Marken auf allen Zeilen in der Datei (wenn das, was Sie wollen).