dh-Materialien
Java Projekte
// JavaProject TextAnalysis
TextAnalysis.java

// TextAnalysis.java

import java.awt.*;
import java.util.Arrays;
import javax.swing.*;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;


class Analyser {

    static int getIndexOf(int num, int[][] array) {
        int index = -1; // Datentypen
        int len = array[0].length;

        for (int pos=0; pos<len; pos++) {
            if (num == array[1][pos]) {
                index = pos;
                break;
            }
        }
        return index;
    }

    static int[] trimArray(int[] array) {
        int pos = 0;
        int len = array.length;
        while (array[pos] == 0) pos++;
        int[] newarray = new int[len-pos];
        for (int i=pos,k=0; i<len; i++) newarray[k++] = array[i];
        return newarray;
    }

    static String analyseText(String txt) { // Zeichenketten
        int len = txt.length();
        int pos, i, n, index;
        char ch;
        String perc;
        String nstr;
        String result = "";

        if (len != 0) {
            char[] chararray = txt.toCharArray();
            int[][] intarray = new int[2][len];
            int[] sortarray = new int[len];

            // Zählen der Leerzeichen im eingegebenen Text
            int num32 = 0;
            for (pos=0; pos<len; pos++) {
                if (chararray[pos] == ' ') num32++;
            }

            // Bestimmen der Häufigkeit der Zeichen im eingegebenen Text
            for (pos=0; pos<len; pos++) {
                ch = chararray[pos];
                n = 0;
                if (ch != ' ') {
                    for (i=pos; i<len; i++) {
                        if (chararray[i] == ch) {
                            n++;
                            chararray[i] = ' ';
                        }
                    }
                    intarray[0][pos] = (int) ch; // Ausdrücke
                    intarray[1][pos] = (int) 1000*n/(len-num32);
                    sortarray[pos] = (int) 1000*n/(len-num32);
                }
            }

            // Sortieren der Häufigkeitswerte nach ihrer Größe
            Arrays.sort(sortarray);
            sortarray = trimArray(sortarray);
            len = sortarray.length;

            // Ausgabe der Ergebnisse auf dem Textfeld area_analysis
            for (pos=len-1; pos>-1; pos--) {
                index = getIndexOf(sortarray[pos], intarray);
                n = intarray[0][index];
                nstr = String.valueOf(n);
                if (nstr.length() < 3) nstr = " " + nstr;
                ch = (char) n;
                perc = String.valueOf((float) intarray[1][index]/10);
                if (perc.length() < 4) perc = " "+perc;
                intarray[1][index] = -1;
                result = result.concat(" " + nstr + " " + ch);
                result = result.concat(" " + perc + "%" + "\n");
            }
        }
        return result;
    }
}


class TFrame extends JFrame implements DocumentListener {
    private static final long serialVersionUID = 0L;

    Image icon;
    JScrollPane pane_text;
    JTextArea area_text;
    JScrollPane pane_analysis;
    JTextArea area_analysis;

    Font font = new Font("Courier", Font.PLAIN, 12);

    public TFrame() {
        setTitle("Analysieren eines Textes");
        icon = Toolkit.getDefaultToolkit().getImage("dh.png");
        setIconImage(icon);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setSize(349, 301);
        setLayout(null);
        setLocationRelativeTo(null);
        setLayout(null);

        area_text = new JTextArea();
        area_text.setEditable(true);
        area_text.setLineWrap(true);
        area_text.setWrapStyleWord(true);
        area_text.getDocument().addDocumentListener(this);
        pane_text = new JScrollPane(area_text);
        pane_text.setBounds(10, 10, 170, 243);
        add(pane_text);

        area_analysis = new JTextArea();
        area_analysis.setEditable(false);
        area_analysis.setLineWrap(true);
        area_analysis.setWrapStyleWord(true);
        area_analysis.setFont(font);
        area_analysis.setBackground(this.getContentPane().getBackground());
        pane_analysis = new JScrollPane(area_analysis);
        pane_analysis.setBounds(192, 10, 130, 243);
        add(pane_analysis);

        setVisible(true);
    }

    @Override
    public void changedUpdate(DocumentEvent e) {
        area_analysis.setText(Analyser.analyseText(area_text.getText()));
    }

    @Override    
    public void
insertUpdate(DocumentEvent e) {
        area_analysis.setText(Analyser.analyseText(area_text.getText()));
    }

    @Override
    public void
removeUpdate(DocumentEvent e) {
        area_analysis.setText(Analyser.analyseText(area_text.getText()));
    }
}


public class TextAnalysis {

    public static void main(String[] args) {
        new TFrame();
    }
}

Download TextAnalysis