W
woifie
Gast
Java:
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.HashMap;
public class Textstatistik
{
private static final int ASCII_LC_ALPHA_OFFSET = 97;
private static final int NUM_ASCII_CHARS = 26;
private static final char[] extra = new char[] { 'Š', 'š', 'Ÿ', '§' };
private static final HashMap<Character, Integer> extraMap = new HashMap<Character, Integer>();
private static final String replacePattern = String.format("[^a-z%s]+",
new String(extra));
static
{
for (int i = 0; i < extra.length; ++i)
{
extraMap.put(extra[i], i);
}
}
public static void main(String[] args) throws Exception
{
final Stat stat = countFrequency(getFileContents(args[0]));
final double onePercent = stat.total * 0.01;
for (int i = 0; i < stat.freq.length; ++i)
{
int c = i >= NUM_ASCII_CHARS ? extra[i - NUM_ASCII_CHARS]
: ASCII_LC_ALPHA_OFFSET + i;
double percentage = stat.freq[i] / onePercent;
System.out.println(String.format("%c: %4d (%5.2f %%)", c,
stat.freq[i], percentage));
}
System.out.println(String.format("?: %4d (%5.2f %%)", stat.unkown,
stat.unkown / onePercent));
}
static private String getFileContents(String file) throws IOException
{
StringBuilder contents = new StringBuilder();
final BufferedReader in = new BufferedReader(new FileReader(new File(
file)));
String line = null;
while (null != (line = in.readLine()))
{
contents.append(line);
}
return contents.toString();
}
static private class Stat
{
public int[] freq;
public int unkown;
public int total;
}
static private Stat countFrequency(String str)
{
final char[] input = str.toLowerCase().replaceAll(replacePattern, "")
.toCharArray();
final int numUnknown = str.length() - input.length;
final int[] frequency = new int[NUM_ASCII_CHARS + extra.length];
for (char c : input)
{
if (c > ASCII_LC_ALPHA_OFFSET + NUM_ASCII_CHARS)
{
frequency[NUM_ASCII_CHARS + extraMap.get(c)]++;
} else
{
frequency[c - ASCII_LC_ALPHA_OFFSET]++;
}
}
Stat stat = new Stat();
stat.freq = frequency;
stat.unkown = numUnknown;
stat.total = str.length();
return stat;
}
}
bitte um hilfe
Zuletzt bearbeitet von einem Moderator: