Also bin ich kurz davor, meinen Code für Zeichenhäufigkeit in Java zu beenden. Die Anweisungen sind also, eine Textdatei zu erhalten und die Zeichenhäufigkeiten (von A-Z, a-z und 0-9) in eine andere Textdatei zu speichern, aber die Anzahl der Frequenzen wird dort sortiert. Hier ist, was ich kam mit:Java-Datei-E/A: In welcher Bedingung sollte ich das doppelte Schreiben von Buchstaben in einer Textdatei stoppen?
import java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.util.Scanner;
import javax.swing.JFileChooser;
public class Machine_Exer6 {
public void charfrequency() {
// TODO Auto-generated method stub
File infile = null;
File result = null;
Scanner myscan = null;
JFileChooser fc= new JFileChooser();
fc.showOpenDialog(null);
infile = fc.getSelectedFile();
fc.setSelectedFile(new File(""));
fc.showSaveDialog(null);
result = fc.getSelectedFile();
try {
myscan = new Scanner(infile);
while(myscan.hasNextLine()){
String str = myscan.nextLine();
Alphanumeric(str, result);
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
myscan.close();
}
}
private void Alphanumeric(String str, File result) {
// TODO Auto-generated method stub
int ctr=0;
PrintWriter printtofile = null;
try {
printtofile = new PrintWriter(result);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try{
for(int j=0; j<str.length(); j++){
for (int i=0; i<str.length(); i++){
if((str.charAt(j)==str.charAt(i) || str.charAt(j)==Character.toUpperCase(str.charAt(i))) && (Character.isAlphabetic(str.charAt(j)) || Character.isDigit(str.charAt(j)))){
ctr++;
}
}
if (ctr!=0){
printtofile.println(str.charAt(j)+": "+ctr);
ctr=0;
}
}
}finally{
printtofile.close();
}
}
Aber dann, als ich versuchen, eine Textdatei zu lesen, sagen wir, dass ihr Inhalt wie hat:
„Immer wenn
Wo auch immer, wo immer, wo immer
Sie sind
Ich werde lieben, lieben, lieben. "
Die erstellte Textdatei sieht wie folgt aus:
i: 2
w: 1
i: 2
l: 5
l: 5
l: 5
O: 3
v: 3
e: 3
l: 5
O: 3
v: 3
e: 3
l: 5
O: 3
v: 3
e: 3
, auch die Großbuchstaben in dem Kleinen Zähler nicht enthalten. Gibt es eine Möglichkeit, das zu beheben?
Ich schlage vor, Sie erstellen eine 'Map' das ist die Anzahl der einzelnen Zeichen und nur drucken, wenn Sie das Ergebnis haben. –