Java: Text einlesen und Häufigkeit der Buchstaben analysieren?

Hey! Ich möchte einen Text einlesen und die Häufigkeit der Buchstaben analysieren. Dazu habe ich folgenden Code geschrieben. Leider ist dort irgendwo ein Logikfehler versteckt, den ich aber nicht finde :( Das Programm tut nicht, was es soll. Es wird für alle Buchstaben die Anzahl 0 ausgegeben, was ja nicht sein kann. Ich wäre sehr dankbar, wenn jemand meinen Denkfehler findet. Dankeschön! P.S: hab erst vor 2 Wochen mit Programmieren angefangen, also verurteilt meinen Code nicht gleich ^^

import java.io.*;

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

    // Es werden 180 000 Buchstaben des Textes "time" eingelesen und in einem char Array 'buchstaben' gespeichert
    FileReader reader = new FileReader("d:\\time.txt");
    int n1 = 180000;
    char[] buchstaben = new char[n1];
    reader.read(buchstaben);
    reader.close();
    
    // Alle Buchstaben des englischen Alphabets werden in einem char Array 'alphabet' gespeichert
    char[] alphabet = {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x', 'y', 'z'};
    
    // Es wird ein neues int Array 'counter'angelegt, mit dem später gezählt werden soll, wie oft ein 
    // einzelner Buchstabe im Text vorgekommen ist
    int a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z;
    a = b = c = d = e = f = g = h = i = j = k = l = m = n = o = p = q = r = s = t = u = v = w = x = y = z = 0;
    // Anfangs wird jedem Element des counters der Wert 0 zugewiesen, da ja noch keine Buchstaben gezählt wurden
    int[] counter = {a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z};
    for (int i1 = 0; i1 < counter.length; i1 ++){
        counter[i1] = 0;    
    }
    
    // Jeder Buchstabe im Text (gespeichert im char Array 'buchstaben') wird mit jedem Buchstaben des englischen Alphabets
    // verglichen. Wenn sie übereinstimmen, wird der Array 'counter' an der jeweiligen Stelle im Array, der für einen
    // bestimmten Buchstaben steht, um 1 erhöht
    for (int k1 = 0; k < buchstaben.length; k++) {
        for (int k2 = 0; k2 < alphabet.length; k2 ++) {
            if (buchstaben[k1] == alphabet[k2]) {
                counter[k2] = counter[k2] + 1;
            }
        }   
    }
    // Die Anzahl jedes Buchstaben, der im Text vorgekommen ist, wird ausgegeben
    System.out.println("Anzahl der Buchstaben: ");
    for (int k3 = 0; k3 < counter.length; k3 ++) {
        System.out.println(alphabet[k3] + " : " + counter[k3]);
    }
    //Die prozentuale Häufigkeit der Buchstaben soll berechnet und ausgegeben werden
    // (Anzahl des Buchstaben im Text / Anzahl aller Buchstaben im Text) * 100% 
    System.out.println();
    System.out.println("Häufigkeit der Buchstaben in Prozent: ");
    double h1 = 0;
    for (int k4 = 0; k4 < counter.length; k4 ++) {
        h1  = (counter[k4] / n1) * 100;
        System.out.println(alphabet[k4] + " : " + h1 + " % ");
    }

}

}

Computer, IT, Programmieren, Java, Programmierung, Code, Informatik, Häufigkeit
3 Antworten

Meistgelesene Fragen zum Thema Häufigkeit