Probleme mit meinem Programm mit Arraylists, BufferedReader, Methoden und allgemeine Vergesslichkeit, wie Java-Werke

StackOverflow https://stackoverflow.com/questions/3748350

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

War es hilfreich?

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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top