Buchstaben zählen aus txt Datei

Status
Nicht offen für weitere Antworten.
M

mangrove

Gast
Hallo!

Ich würde gerne wissen wie man Buchstaben aus einer txt Datei zählt und die Häufigkeit dieser angibt!

Ich habe folgendes Script - irgenwie zeigt er mir jedoch folgende Fehler an:

Code:
import java.io.*;

public class wievieleBuchstaben {
    public static void main (String[] args) throws IOException {
        
    	String nameEingabedatei;
    	String zeile;
    	String aktuellesToken;
    	File eingabedatei;
    	FileReader fr;
    	BufferedReader br;
    
    
      	nameEingabedatei = "HHGTTG.txt";
      	//Anzahl der Worte ermitteln
      	System.out.println("Inhalt von "+nameEingabedatei);
      	eingabedatei = new File(nameEingabedatei);
      	fr = new FileReader(eingabedatei);
      	br = new BufferedReader(fr);
      	zeile=br.readLine();
        
        //BufferedReader eingabepuffer = new BufferedReader(new InputStreamReader(System.in));
        //String zeile = eingabepuffer.readLine();
        analyse (zeile);
    }

    public static void analyse(String s) {
        byte[] text = new byte[200];
        int[] anzahl = new int[26];
        int i;
        text = s.getBytes();
        for (i = 0; i < text.length; i++) 
            if (text[i]>90) text[i]-=32;         // Alles nach Großbuchstaben umwandeln
        for (i = 0; i < text.length; i++) 
            anzahl[(text[i]-65)]++;              // und jetzt zählen ;-)
        for (i = 0; i < 26; i++) 
            System.out.println((char) (i+65) + ": " + anzahl[i] + "\t" + stern(anzahl[i]));       // Ergebnis ausgeben
    }

    public static String stern(int anzahl) {
        String s = "";
        for (int i = 0; i<anzahl; i++) s+="*";
        return s;
    }
}


java.lang.ArrayIndexOutOfBoundsException
at test.wievieleBuchstaben.analyse(wievieleBuchstaben.java:45)
at test.wievieleBuchstaben.main(wievieleBuchstaben.java:34)
Exception in thread "main"




Bin für jeden Ratschlag sehr dankbar!
 

mic_checker

Top Contributor
mangrove hat gesagt.:
Code:
        for (i = 0; i < text.length; i++) 
            if (text[i]>90) text[i]-=32;         // Alles nach Großbuchstaben umwandeln
        for (i = 0; i < text.length; i++) 
            anzahl[(text[i]-65)]++;              // und jetzt zählen ;-)

guck dir mal die zeilen an, wahrscheinlich schmeisst er da die exception, da du versuchst auf elemente des arrays zuzugreifen die nicht existieren...
 
M

mangrove

Gast
DANKE - hört sich den Fehlermeldungen entsprechend an!

Aber wie kann ich das umgehen, sodass ich auch größere TXT files bearbeiten kann???

Paul
 

mic_checker

Top Contributor
kannst ja mit BufferedReader einlesen und guckst dann zeile für zeile durch welche Buchstaben drin sind. Dabei betrachtest du den String, nicht ein byte-Array.

Also String zeichenweise durchgehen (charAt(...)) und gucken was für Buchstabe drin ist....
 
M

mangrove

Gast
Leider bin ich ziemlicher Anfänger und brauche die Funktion aber!

Dürfte ich dich bitten mir das kurz zu tippen sodass es funktioniert?

:?:

Wäre absolut Spitze!
 

Sky

Top Contributor
Habe ein wenig in deinem Code rumgetippt und die Änderugen kommentiert...

Code:
class wievieleBuchstaben {
    public static void main (String[] args) throws IOException {

       String nameEingabedatei;
       String zeile;
       String aktuellesToken;
       File eingabedatei;
       FileReader fr;
       BufferedReader br;


         nameEingabedatei = "c:/test.txt";      //sky80: Dateiname geändert
         //Anzahl der Worte ermitteln
         System.out.println("Inhalt von "+nameEingabedatei);
         eingabedatei = new File(nameEingabedatei);
         fr = new FileReader(eingabedatei);
         br = new BufferedReader(fr);
         zeile=br.readLine();     //sky80: es wird nur die 1. Zeile eingelesen, dass ist klar, oder??
         analyse (zeile);
    }

    public static void analyse(String s) {
        //sky80: 'text' wird nicht benötigt, String bietet eine Methode zur Umwandlung:
        s = s.toUpperCase();
        int[] anzahl = new int[26];
        int i;
        for (i = 0; i < s.length(); i++)
            anzahl[(s.charAt(i)-65)]++;              // und jetzt zählen ;-)
        for (i = 0; i < 26; i++)
            System.out.println((char) (i+65) + ": " + anzahl[i] + "\t" + stern(anzahl[i]));       // Ergebnis ausgeben
    }

    public static String stern(int anzahl) {
        StringBuffer s = new StringBuffer();
        //for (int i = 0; i<anzahl; i++) s+="*";    // String += String sollte man nicht machen wg. Performanz
        for (int i = 0; i<anzahl; i++) s.append('*');
        return s.toString();
    }
}
 
M

mangrove

Gast
VIELEN DANK für deine Bemühungen!

Hat es bei dir funktioniert - bei mir leider nicht es kam:

java.lang.ArrayIndexOutOfBoundsException
at test.wievieleBuchstaben.analyse(wievieleBuchstaben.java:45)
at test.wievieleBuchstaben.main(wievieleBuchstaben.java:34)
Exception in thread "main"

Paul
 
M

mangrove

Gast
Nein!

Gemischt - Klein als auch Großbuchstaben als auch Sonderzeichen!

Ich hoffe das hilft dir weiter!
 

mic_checker

Top Contributor
Hol mal ne Datei mit nur Groß/KLeinbuchstaben, sonst nichts....wahrscheinlich macht er hier nen Fehler:

Code:
anzahl[(s.charAt(i)-65)]++;
 
G

Guest

Gast
Ich hab ne Datei erstellt die wie folgt aussieht:



dies ist ein TEST

jawohl ein Test



die Datei heißt test.txt und liegt auf C:

leider funktioniert es nicht!

Mache ich was falsch?
 

mic_checker

Top Contributor
Du müsstest noch kontrollieren ob es sich um einen Buchstaben handelt. Dann kannst du entsprechend die Position im Array für diesen Buchstaben ansprechen.

Also Rückgabewert von charAt(i) überprüfen.
 
G

Guest

Gast
Dürfte ich dich wieder um diesen Code bitten - ich weiß nicht wie man überprüft ob es sich um ein Zeichen handelt!

Bitte!
 

mic_checker

Top Contributor
probiers mal damit:
Code:
        char ch;
        for (i = 0; i < s.length(); i++) {
        	ch = s.charAt(i);
	        if(ch >= 65 && ch <= 90)
            anzahl[ch-65]++;
         }
 
M

mangrove

Gast
DU BIST EIN GENIE!!!!!!!!!!!!!!!!!!!!!!

DANKE!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

-----------------------------------------
 
M

mangrove

Gast
wie könnte ich das noch machen das mehrere Zeilen eingelesen werden? (event. auch Sonderzeichen erkannt werden)

Das wäre meine letzte Frage!
 

mic_checker

Top Contributor
mach halt ein while um dein readLine() und guck ob es != null ist.

Wenn du sonderzeichen haben willst musst du mehr Platz im Array reservieren....
 
M

mangrove

Gast
So???

while (readLine() != 0){
zeile=br.readLine();
}


SUPER - DANKE - Das mit dem mehr Platz machen reicht voll aus!!!
 

mic_checker

Top Contributor
In die while Bedingung solltest du noch das zeile = ... reinpacken, damit du in while auf zeile richtig zugreifen kannst.
 
M

mangrove

Gast
Vielen DANK für deine Hilfe!!!

Leider funktioniert das nicht ganz so!

Code:
while (br.readLine() != ""){
    zeile=br.readLine();
}
analyse (zeile); //hier sagt er mir dann: The local variable zeile may not have been initialized

Wenn ich das wegbekommen würde wäre ich endlich fertig!
 

mic_checker

Top Contributor
die analyse muss in die schleife rein, außerdem musst du die Schleife dann so aufbauen:

Code:
while((zeile = br.readLine()) != null) {
analyse(zeile);
}

sollte so klappen....
 
M

mangrove

Gast
leider nicht - dann kommt:

java.lang.Error: Unresolved compilation problem:
Unmatched bracket

at java.lang.reflect.Constructor.newInstance(Native Method)
at test.wievieleBuchstaben.main(wievieleBuchstaben.java:13)
Exception in thread "main"
 
M

mangrove

Gast
komisch!?

siehts bei dir auch so aus:

Code:
import java.io.*;

class wievieleBuchstaben {
    public static void main (String[] args) throws IOException {

       String nameEingabedatei;
       String zeile;
       String aktuellesToken;
       File eingabedatei;
       FileReader fr;
       BufferedReader br;


         nameEingabedatei = "HHGTTG.txt";
         System.out.println("Inhalt von "+nameEingabedatei);
         eingabedatei = new File(nameEingabedatei);
         fr = new FileReader(eingabedatei);
         br = new BufferedReader(fr);
         while((zeile = br.readLine()) != null) {
			analyse(zeile);
		 } 

    public static void analyse(String s) {
    	
        s = s.toUpperCase();
        int[] anzahl = new int[32];
        int i;
        char ch;
        for (i = 0; i < s.length(); i++) {
           ch = s.charAt(i);
           if(ch >= 65 && ch <= 90)
            anzahl[ch-65]++;
         } 
        for (i = 0; i < 32; i++)
            System.out.println((char) (i+65) + ": " + anzahl[i] + "\t" + stern(anzahl[i]));      
    }

    public static String stern(int anzahl) {
        StringBuffer s = new StringBuffer();
        
        return s.toString();
    }
 
} 
}
 
M

mangrove

Gast
bei mir gehts jetzt auch!!! *hurra*

Aber jede Zeile einzeln ;-)
 

mic_checker

Top Contributor
Kontrollier mal deine Klammersetzung, am Ende eine zu viel, nach while fehlt noch eine....sollte dann so aussehen:

Code:
import java.io.*;

class wievieleBuchstaben {
    public static void main (String[] args) throws IOException {

       String nameEingabedatei;
       String zeile;
       String aktuellesToken;
       File eingabedatei;
       FileReader fr;
       BufferedReader br;


         nameEingabedatei = "C://test.txt";
         System.out.println("Inhalt von "+nameEingabedatei);
         eingabedatei = new File(nameEingabedatei);
         fr = new FileReader(eingabedatei);
         br = new BufferedReader(fr);
         while((zeile = br.readLine()) != null) {
         analyse(zeile);
       }
      }

    public static void analyse(String s) {
       
        s = s.toUpperCase();
        int[] anzahl = new int[32];
        int i;
        char ch;
        for (i = 0; i < s.length(); i++) {
           ch = s.charAt(i);
           if(ch >= 65 && ch <= 90)
            anzahl[ch-65]++;
         }
        for (i = 0; i < 32; i++)
            System.out.println((char) (i+65) + ": " + anzahl[i] + "\t" + stern(anzahl[i]));     
    }

    public static String stern(int anzahl) {
        StringBuffer s = new StringBuffer();
       
        return s.toString();
    }


}

edit:
ok ;)
 
M

mangrove

Gast
Stimmt - hatte ich nen Fehler! DANKE

Aber kommt bei dir das Ergebnis nicht auch einzeln pro Zeile???

Also:

A: 2
B: 0
....
A: 4
B: 2
....
A: 5
...
 

Sky

Top Contributor
Willst Du die Analyse für die ganze Datei durchführen? Das geht dann ungefähr so (Code nicht getestet)

Code:
StringBuffer fileContent = new StringBuffer(); // StringBuffer anlegen, der den Inhalt der Datei aufnimmt
while((zeile = br.readLine()) != null) { 
  fileContent.append( zeile ); // eingelesene Zeile an den Buffer ranhängen
} 
analyse(fileContent.toString()); // Datei Analyse durchführen
 

mic_checker

Top Contributor
Oder aber du rufst nicht jedes Mal in analyse stern(..) etc. auf, sondern erst nach den ganzen Aufrufen von analyse....
 

Sky

Top Contributor
mic_checker hat gesagt.:
Oder aber du rufst nicht jedes Mal in analyse stern(..) etc. auf, sondern erst nach den ganzen Aufrufen von analyse....
Dann müßte der Code aber noch'n bißchen umgebaut werden:
- das int[] darf nicht bei jeder Zeile angelegt werden, sondern muss Instanzweise zur Verfügung stehen
- die Ausgabe muss in eine neue Methode (z.B. ausgabe() ) verlegt werden
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
A Erste Schritte Datei einlesen und Buchstaben zählen Java Basics - Anfänger-Themen 13
H Buchstaben zählen Java Basics - Anfänger-Themen 9
F Java Programm, das kleine Buchstaben in einem String zählen soll und bei großen Buchstaben oder Sonderzeichen abbrechen soll. Java Basics - Anfänger-Themen 5
G Erste Schritte Einen Array absuchen und Buchstaben zählen Java Basics - Anfänger-Themen 17
J Buchstaben aus String einzeln Zählen Java Basics - Anfänger-Themen 12
M Von File lesen Buchstaben lesen und zählen - scheitert an der Eingabe Java Basics - Anfänger-Themen 4
S Buchstaben/Wörter im String zählen Java Basics - Anfänger-Themen 6
J Buchstaben zählen Java Basics - Anfänger-Themen 17
R buchstaben zählen Java Basics - Anfänger-Themen 8
V Anzahl eines Buchstaben in einem String zählen Java Basics - Anfänger-Themen 7
J Buchstaben zählen Java Basics - Anfänger-Themen 4
H Buchstaben zählen! Java Basics - Anfänger-Themen 3
S Buchstaben zählen Java Basics - Anfänger-Themen 7
R Bestimmten Buchstaben im String zählen Java Basics - Anfänger-Themen 9
B Buchstaben/Zahlen zählen Java Basics - Anfänger-Themen 2
Ü Java Array - Buchstaben als Zahlen ausgeben Java Basics - Anfänger-Themen 22
L Buchstaben entfernen zipZap Java Basics - Anfänger-Themen 8
S String Array Buchstaben um einen gewissen Wert verschieben Java Basics - Anfänger-Themen 4
BeginnerJava String mit vorgegebener Länge und Buchstaben erzeugen/ mit Leerstellen Java Basics - Anfänger-Themen 8
S Buchstaben Programmierung Bedeutung Java Basics - Anfänger-Themen 4
C In String, Buchstaben ersetzen durch andere Buchstaben Java Basics - Anfänger-Themen 26
Tom/S KeyCode zu Buchstaben Java Basics - Anfänger-Themen 0
C ArrayList sortieren nach bestimmten Buchstaben in den Wörtern Java Basics - Anfänger-Themen 13
R Mehrere Buchstaben aus einem String entfernen Java Basics - Anfänger-Themen 1
J Verschieben von Buchstaben in einem String um vorgegebene Anzahl von Zeichen innerhalb eines weiteren String Java Basics - Anfänger-Themen 12
Q Besitzen zwei Strings identische Buchstaben, nur in anderer Reihenfolge? Java Basics - Anfänger-Themen 10
J Buchstabenhäufigkeit mit Array und Ausgabe des häufigsten Buchstaben Java Basics - Anfänger-Themen 25
J Buchstaben aus textArea extrahieren Java Basics - Anfänger-Themen 4
S Buchstaben in Großbuchstaben (Strings) Java Basics - Anfänger-Themen 5
O FilterStream häufigkeit der Buchstaben Java Basics - Anfänger-Themen 43
F Buchstaben in einem String vertauschen (Ohne replace) Java Basics - Anfänger-Themen 10
H Anzahl verschiedener Buchstaben im String Java Basics - Anfänger-Themen 41
A Erste Schritte Buchstaben im Array suchen Java Basics - Anfänger-Themen 8
K String buchstaben auslesen Java Basics - Anfänger-Themen 9
K Probleme beim Programm schreiben - Lesen von Dateiinhalten -zaehlen von Wörtern/ Buchstaben Java Basics - Anfänger-Themen 4
J Für jeden Buchstaben eine Zahl Java Basics - Anfänger-Themen 1
B Wie kann ich die Buchstaben sortieren nach der Höhe der Zahlen Java Basics - Anfänger-Themen 14
Z Ersten Buchstaben eines Elements eines String-Arrays auslesen Java Basics - Anfänger-Themen 5
x-tshainge Zahlen Buchstaben zuordnen Java Basics - Anfänger-Themen 4
T Datentypen char als Buchstaben statt als Zahl ausgeben Java Basics - Anfänger-Themen 4
M replace Methode für Buchstaben Java Basics - Anfänger-Themen 29
L Feld mit beliebiger Anzahl von Buchstaben füllen... Java Basics - Anfänger-Themen 5
J Methoden Eingabe Methode nur Buchstaben Java Basics - Anfänger-Themen 4
I Hilfe beim löschen von Buchstaben. Java Basics - Anfänger-Themen 1
I Hilfe beim löschen schon Buchstaben. Java Basics - Anfänger-Themen 4
DestinatioN Problem beim splitten eines Satzes in Wörter und die Wörter in Buchstaben Java Basics - Anfänger-Themen 2
V char Eingabe aber nur für Buchstaben Java Basics - Anfänger-Themen 4
J Zufällige Buchstaben Java Basics - Anfänger-Themen 45
C Klassen Positionszähler auf Buchstaben setzen Java Basics - Anfänger-Themen 14
D Input/Output Buchstaben als bestimmte Zahl erkennen Java Basics - Anfänger-Themen 4
S Input/Output Buchstaben in Eingabe finden und ausgeben Java Basics - Anfänger-Themen 5
R [Erledigt]Fehler beim löschen von einzelnen Buchstaben aus StringBuilder Java Basics - Anfänger-Themen 1
Bregedur String beim nächstem groß geschriebenen Buchstaben trennen Java Basics - Anfänger-Themen 1
E Input/Output Konsole erkennt meinen Buchstaben nicht Java Basics - Anfänger-Themen 12
F Häufigkeit von Buchstaben Java Basics - Anfänger-Themen 7
L Java Strings Buchstaben vertauschen Java Basics - Anfänger-Themen 4
I Programm, welches eine Textzeile einliest und alle darin enthaltenen Buchstaben umwandelt Java Basics - Anfänger-Themen 3
S String ab dem Wechsel Buchstaben zu Zahlen splitten Java Basics - Anfänger-Themen 14
A Erste Schritte Buchstaben in zahlen umwandeln Java Basics - Anfänger-Themen 4
S Groß bzw. Klein Buchstaben umwandeln (gemischt) Java Basics - Anfänger-Themen 1
S Einzelne Buchstaben aus Jtextfield in array Java Basics - Anfänger-Themen 2
A OOP Buchstaben mit ASCII Werten darstellen Java Basics - Anfänger-Themen 1
M String überprüfen ob nur Buchstaben enthalten sind? Java Basics - Anfänger-Themen 10
E Buchstaben verhindern / Try & Catch Block Java Basics - Anfänger-Themen 3
B Zahlen und Buchstaben in cmd eingeben Java Basics - Anfänger-Themen 5
S nur Buchstaben in JTextField Java Basics - Anfänger-Themen 3
X String einzelne Buchstaben ersetzen Java Basics - Anfänger-Themen 4
V Zufallsgenerator für Buchstaben Java Basics - Anfänger-Themen 22
A Erste Schritte konsoleneingabe von Buchstaben Java Basics - Anfänger-Themen 3
K Methoden Kontrollstruktur versagt bei Buchstaben... Java Basics - Anfänger-Themen 6
E Buchstaben nach Größe vergleichen Java Basics - Anfänger-Themen 4
M Benennung nach Buchstaben Java Basics - Anfänger-Themen 18
M Erste Schritte zwei Buchstaben die im String enthalten sind ausgeben Java Basics - Anfänger-Themen 21
J Programm zum Buchstaben austauschen, logikproblem Java Basics - Anfänger-Themen 2
T keine buchstaben!nur zahlen eingabe möglich Java Basics - Anfänger-Themen 48
P toUpperCase() - Buchstaben die ersetzt werden als Großbuchstaben ausgeben Java Basics - Anfänger-Themen 5
R Regexp nur Buchstaben und Ziffener beliebig oft Java Basics - Anfänger-Themen 3
R buchstaben einlesen - fehlermeldung schreiben? Java Basics - Anfänger-Themen 9
M String (mit Buchstaben) zu Int Java Basics - Anfänger-Themen 6
D Buchstaben den jeweiligen Zahlen hinzufügen mit einer if. Java Basics - Anfänger-Themen 6
F Datentypen Zufällige Buchstaben vertauschen Java Basics - Anfänger-Themen 3
K Zahlen und buchstaben gemeinsam in ein array? Java Basics - Anfänger-Themen 17
F Leerzeichen zwischen jeden Buchstaben eines Strings einfügen Java Basics - Anfänger-Themen 16
H String zerlegen in einzelne Buchstaben (char)?? Java Basics - Anfänger-Themen 7
R In einem Palindrom 2 Buchstaben vergleichen Java Basics - Anfänger-Themen 16
J Anzahl der Buchstaben in einem String Java Basics - Anfänger-Themen 12
P Buchstaben: Haeufigkeitstabelle Java Basics - Anfänger-Themen 9
S String Elemente bzw. Buchstaben miteinander vertauschen? Java Basics - Anfänger-Themen 6
T JTextField max. 8 Zeichen, nur Buchstaben Java Basics - Anfänger-Themen 8
M jeden 2ten Buchstaben aus array Java Basics - Anfänger-Themen 6
C ASCII Codes in Buchstaben umwandeln Java Basics - Anfänger-Themen 2
J Buchstaben einlesen Java Basics - Anfänger-Themen 8
T Buchstaben an bestimmter Stelle aus String lesen Java Basics - Anfänger-Themen 5
A eingelesene String in buchstaben teilen Java Basics - Anfänger-Themen 9
D Suche in JList nach dem ersten Buchstaben Java Basics - Anfänger-Themen 2
G Griechische statt lateinischen Buchstaben beim Schreiben Java Basics - Anfänger-Themen 9
X Auswahl durch Eingabe von Buchstaben - aber wie? Java Basics - Anfänger-Themen 2
T Ersten Buchstaben in einem Wort groß schreiben. Java Basics - Anfänger-Themen 6
N alle "3er" Möglichkeiten aus 10 Buchstaben Java Basics - Anfänger-Themen 6
A Beliebiger String --> Buchstaben und Zahlen Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben