Wortlängen zählen

Just_Inter

Grünschnabel
Hallo!

Ich lese aus einer Textdatei einen Text ein und zerlege ihn in Wörter und gib die einzelnen Wörter aus!
Nun möchte die Häufigkeit der Wortlänge bestimmen, also wieviele Wörter 4, 5, 6 usw. Buchstaben haben.

Wie überprüf ich nun, wie lang die einzelnen Wörter sind und wie speicher ich den aktuellen Stand der Wortlänge am besten ab?

Hier mein bisheriger Stand:
Code:
import java.io.*;

class Wortlaenge
{
      public static void main(String[] args) throws IOException
      {
       Int[] Anzahl;

       FileInputStream istream = new FileInputStream(args[0]);
       InputStreamReader reader = new InputStreamReader(istream, "ISO-8859-1");
       BufferedReader input = new BufferedReader(reader);
       String line;
       while((line=input.readLine()) != null)
       {
           String[] linearray = line.split("\\s");
           for (int x=0; x<linearray.length; x++)
           {

            System.out.println(linearray[x]);
           }
       }
       input.close();
      }
}

danke
 
Hallo und willkommen im Forum!
Ich würde das mit der Klasse Scanner und den Methoden nextXXX() realisieren. Eine dieser Methoden nimmt sogar Regex an, das sollte eigentlich genügen. Zum Abspeichern könnte man tatsächlich ein int Array benutzen, müsste dann aber ein Limit bei z.B. 30 Zeichen setzen.
 
Hallo,

vielleicht versteh ich das falsch, aber reicht es nicht die länge des Wortes über:

Java:
linearray[x].length();

zu holen?

Zum Abspeichern würde ich auch einen int-Array verwenden.
Jede int im Array steht dann für die Anzahl der Wörter mit der Länge entsprechend der Position im Array.
Also so etwa:

Java:
int[] frequencyArray = new int[30];
...
frequencyArray[linearray[x].length()]++;

Wenn also ein Wort 4 Zeichen hat, wird der Zähler im frequencyArray an der Stelle 4 um eins hochgesetzt.

lg
 
Danke für eure Antwort!

Bin dem Tipp von EasyEagle gefolgt und funktioniert tadellos! :)

Hab jetzt eine andere Frage, nun möchte ich die gesammelten Daten ausgeben.
dabei sollen die Einer-, Zehner-, Hunderterstellen der Zahlen untereinander stehen, Klammer unter Klammer usw. und nicht so wie jetzt linksbündig:

118 Wörter mit 7 Buchstaben (7,35%)
117 Wörter mit 8 Buchstaben (7,29%)
81 Wörter mit 9 Buchstaben (5,04%)
68 Wörter mit 10 Buchstaben (4,23%)
69 Wörter mit 11 Buchstaben (4,30%)
42 Wörter mit 12 Buchstaben (2,62%)

Danke
LG
 
Zuletzt bearbeitet:
Zurück