Ich muss eine TXT-Datei vorbereiten und zählen, wie oft jedes Zeichen des Alphabets in der Datei auftritt. Ich habe ein sehr schönes Stück Code gefunden, aber leider funktioniert es nicht mit polnischen Zeichen wie ą, ê, ć, ó, ż, ź. Obwohl ich sie in das Array einfüge, werden sie aus irgendeinem Grund nicht in der TXT-Datei gefunden, daher ist die Ausgabe 0.Wie Vorkommen von polnischen Zeichen in TXT-Datei zu zählen
Weiß jemand warum? Vielleicht sollte ich sie anders zählen, mit "Switch" oder ähnlichem. Bevor jemand fragt - ja, wird die TXT-Datei mit UTF-8 :)
public static void main(String[] args) throws FileNotFoundException {
int ch;
BufferedReader reader;
try {
int counter = 0;
for (char a : "AĄĆĘÓBCDEFGHIJKLMNOPQRSTUVWXYZ".toCharArray()) {
reader = new BufferedReader(new FileReader("C:\\Users\\User\\Desktop\\pan.txt"));
char toSearch = a;
counter = 0;
try {
while ((ch = reader.read()) != -1) {
if (a == Character.toUpperCase((char) ch)) {
counter++;
}
}
} catch (IOException e) {
System.out.println("Error");
e.printStackTrace();
}
System.out.println(toSearch + " occurs " + counter);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
Wenn die Testdatei UTF8-codiert ist, warum lesen Sie sie nicht mit der UTF8-Codierung, statt die Standardzeichencodierung Ihrer Plattform zu verwenden? Haben Sie das grundlegende Debugging durchgeführt, wie das Drucken (oder das Untersuchen mit dem Debugger) nach jedem gelesenen Zeichen, das Drucken (oder das Überprüfen mit dem Debugger) auf seinen Großbuchstaben? –
Siehe [Anzahl der einzelnen Zeichen in einem String zählen] (https://codereview.stackexchange.com/q/44186/88267) oder möglicherweise [Anzahl der Vorkommen jedes einzelnen Zeichens] (https://stackoverflow.com/q/ 4112111/5221149) für eine Möglichkeit, die nicht die gesamte Datei mehrmals scannt. – Andreas
@JBNizet Eine kurze Version der Antwort - Lehrerin hat uns gesagt, wir sollten es so machen. - Ich nehme an, sie hat nicht erwartet, dass es nicht funktioniert. Aaaaand nein, aber die Verwendung von "InputStreamReader" hilft. –