2017-05-02 4 views
0

Ich habe ein Problem mit diesem Codezu Array Anfügen in Java

String[] strLines = null; 

while ((strLine = br.readLine()) != null){ 
    strLines = strLine.split("\\s"); 
    System.out.printf("next line - %s\n", strLine); 
    for(String asd : strLines) { 
     System.out.printf("array element - %s\n", asd); 
    } 
    System.out.println(strLines.length); 
} 

Ich versuche, ein Programm aus einer Datei lesen zu machen und dann alle eindeutigen Worte in einer anderen Datei schreiben. Das Problem, das ich habe, ist, dass StrLines-Array (die ich später in Set konvertieren) mit jeder Iteration der While-Schleife überschrieben wird. Ist es möglich, etwas an dieses Array anzuhängen oder sollte ich einen anderen Weg verwenden, um meine Wörter zu speichern?

Dies könnte eine sehr Anfänger Frage sein (ich habe nur für ein paar Monate unregelmäßig codiert), aber ich konnte nirgendwo eine Antwort finden. Danke im Voraus!

+0

* StrLines-Array (die ich später zu Set konvertieren) * Nicht später in ein Set konvertieren. Erstellen Sie stattdessen eine leere Gruppe vor der Schleife und fügen Sie jedes Wort, das Sie gelesen haben, zu dieser Gruppe hinzu. Das Array strLines sollte innerhalb der Schleife deklariert werden. Und es sollte "Wörter" genannt werden, da es ein Array ... von Wörtern ist. –

Antwort

4

Es gibt keinen Grund, ein Array zu erstellen, wenn Sie es nur zu einem späteren Zeitpunkt konvertieren. Fügen Sie einfach auf Ihren Satz in der while-Schleife:

String foo = "foo bar baz foo bar baz"; 
Set<String> fooSet = new HashSet<>(); 
fooSet.addAll(Arrays.asList(foo.split("\\s"))); 

Für Ihr Beispiel

Set<String> fooSet = new HashSet<>(); 

while ((strLine = br.readLine()) != null){ 
    fooSet.addAll(Arrays.asList(strLine.split("\\s"))); 
} 
0

Wenn Sie nicht wissen, was die genaue Größe des Arrays sein könnte, ich eine Arraylist verwenden würde. Eine ArrayList benötigt hier einen Import: import java.util.ArrayList Sie müssen es auch auf eine bestimmte Art deklarieren. Für eine ArrayList voller Strings ist dies: ArrayList<String> arrayListOfStrings = new ArrayList<String>(); Für eine ArrayList des Typs Object wäre dies: ArrayList<Object> arrayListOfObjects = new ArrayList<Object>(); Sie können eine ArrayList von einem beliebigen Objekttyp erstellen. Um ein Objekt hinzuzufügen, verwenden Sie die Funktion .add() von ArrayList. IE: arrayListOfObjects.add(indexOfObject) ArrayLists haben auch .get(index), .remove(index).add(index, Object).size() usw. Ich hoffe, dass Sie dieses kurze Tutorial zu ArrayLists hilfreich finden!

0

können Sie eine List<String> Sammlung verwenden, um alle gefundenen Wörter auf diese Weise zu speichern:

List<String> words = new ArrayList<>(); 

    while ((strLine = br.readLine()) != null){ 
    String[] strLines = strLine.split("\\s"); 
    words.addAll(Arrays.asList(strLines)); 
    System.out.printf("next line - %s\n", strLine); 
    } 

    for(String word: words) { 
     System.out.printf("word - %s\n", word); 
    } 
    System.out.println(words.size()); 
0

Vielen Dank für die Antworten! Alle von ihnen waren wirklich hilfreich, löste mein Problem mit dem Erstellen eines Satzes in der While-Schleife, wie baao vorgeschlagen.

+0

Bitte posten Sie keine Nachrichten als Antworten. Antworten sollten nur Antworten sein. Stattdessen, upvote die Antworten, die Sie nützlich fanden, und geben Sie optional einen Kommentar zu diesen Antworten. –