// JavaProject TextAnalysis

// 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