tutorials.de Buch-Aktion 05/2012
Like Tree2Danke
  • 1 Beitrag von EasyEagle
  • 1 Beitrag von EasyEagle
ERLEDIGT
JA
ANTWORTEN
5
ZUGRIFFE
345
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Just_Inter Just_Inter ist offline Grünschnabel
    Registriert seit
    Jan 2012
    Ort
    A, A
    Beiträge
    3
    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 :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    
    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
     

  2. #2
    genodeftest genodeftest ist offline Mitglied Brillant
    Registriert seit
    Jun 2009
    Beiträge
    870
    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.
     
    Code bitte so einfügen: [java]System.out.println("Hallo");[/java] (Analog für andere Programmiersprachen)
    Code java:
    1
    
    System.out.println("Hallo");
    hilfreich zu Java: Really Big Index, Java ist auch eine Insel Band 1 und Band 2.
    ___________
    Ubuntu Bug #1: Microsoft has a majority market share
    Casecon: Projekt leiser Käse

  3. #3
    EasyEagle EasyEagle ist offline Mitglied
    Registriert seit
    Jan 2012
    Ort
    München
    Beiträge
    19
    Hallo,

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

    Code java:
    1
    
    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:

    Code java:
    1
    2
    3
    
    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
    Just_Inter bedankt sich. 
    http://brain.yubb.de/
    ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    „Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren.“

  4. #4
    Just_Inter Just_Inter ist offline Grünschnabel
    Registriert seit
    Jan 2012
    Ort
    A, A
    Beiträge
    3
    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
    Geändert von Just_Inter (30.01.12 um 19:31 Uhr)
     

  5. #5
    EasyEagle EasyEagle ist offline Mitglied
    Registriert seit
    Jan 2012
    Ort
    München
    Beiträge
    19
    Hi Just_Inter,

    du kannst mit \t einen Tab in den String setzten:

    Code java:
    1
    
    System.out.println("text \t text");

    Die Zahlen möchtest du ja rechtsbündig machen, oder?
    Ich glaub das geht mit %3d oder \3d
    3 = Drei Stellen,
    d = Dezimal

    Hab das allerdings noch nicht ausprobiert.
    Schau mal hier bei Punkt 4.11.1
    http://openbook.galileocomputing.de/...6-312c07a323f4

    lg
    Just_Inter bedankt sich. 
    http://brain.yubb.de/
    ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    „Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren.“

  6. #6
    Just_Inter Just_Inter ist offline Grünschnabel
    Registriert seit
    Jan 2012
    Ort
    A, A
    Beiträge
    3
    Danke EasyEagle, genau so hab ich mir das vorgestellt!! TOP!

    lg
     

Ähnliche Themen

  1. [C#] Zählen
    Von DerNeuling im Forum .NET Windows Forms
    Antworten: 5
    Letzter Beitrag: 17.10.10, 12:52
  2. divs in div zählen
    Von Sladda im Forum Javascript & Ajax
    Antworten: 2
    Letzter Beitrag: 27.05.08, 12:26
  3. ANT Zählen
    Von marcigod im Forum Java
    Antworten: 4
    Letzter Beitrag: 10.09.07, 08:52
  4. ids zählen?
    Von con-f-use im Forum Javascript & Ajax
    Antworten: 5
    Letzter Beitrag: 25.04.05, 22:10
  5. mit sql zählen ...
    Von bspainkf36 im Forum Relationale Datenbanksysteme
    Antworten: 3
    Letzter Beitrag: 17.03.03, 09:43

Stichworte