Java Programm abändern

  • Themenstarter Themenstarter woifie
  • Beginndatum Beginndatum
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;
 }
}
sooooo mein Problem ist ich weiss nicht wie ich das kürzer schreiben soll bzw. anders kann wer helfn? das programm selbst soll eben alle zeichn aus einer textdatei menschenrechte.txt alslesen...

bitte um hilfe
 
Zuletzt bearbeitet von einem Moderator:
Bitte für Java-Code die [ java][ /java] tags benutzen!
Im Editor hast du dafür die Java-Tasse.
 
ah ok danke...mein probelm ist ebn ich kanns nicht kürzer machn bzw anders formulieren hat wer eine idee was ich abändern könnte ? weil ich finde so wie es ist ist es gut...
 
warum willst du es kürzen/ändern? damit du es als deine hausaufgabe abgeben kannst?
irgendwie findet google den sourcecode auch woanders

was "gefällt" dir denn nicht?
 
grundsätzlich sollte es kürzer sein hab aber keine ahnung wie ich das machn soll...kollegn von mir habns mit case gelöst aber keine ahnung^^
 
und es ist die aufgabe es zu kürzn nur weiss ich nicht wie...einfach zeiln rauslöschn zählt nicht^^
 
ahhh ok jetz versteh ich ^^

ich soll rauslöschen was nicht benötigt wird^^

kann mir da bitte jemand helfen?
 

Zurück
Oben