2016-12-04 5 views
-4

Nach dem Zählen der Häufigkeit von Buchstaben, die in einer bestimmten Zeichenfolge angezeigt werden, versuche ich, diese Werte in einem int Array zu speichern. Das Array hat insgesamt 26 Werte für das gesamte Alphabet. Die int-Variable frequency wird als Zähler verwendet, um die Häufigkeit jedes Buchstabens in der Zeichenfolge zu erfassen, aber die Anzahl ist falsch berechnet. Was mache ich falsch?Zählen der Häufigkeit von Buchstaben in einem String

int frequency = 0; 
char character; 
alphaCounts = new int[26]; 

for (int i = 0; i < alphabet.length; i++) { 
    frequency = 0; 
    for (int j = 0; j < stringInput.length(); j++) { 
     character = stringInput.charAt(j); 
     if (character == alphabet[i]) { 
      frequency++; 
     } 
    } 

    System.out.println(alphabet[i] + "\t\t" + frequency); 

    // Populating alphaCounts array with the freq values 
    alphaCounts[i] = frequency; 
    i++; 
    System.out.print("\n" + "alphaCounts: " + alphaCounts[i]); 
} 
+4

Was * etwas * ist falsch? – GurV

+0

@GurwinderSingh der untere Teil, wo ich versuche, die Häufigkeitswerte zu den AlphaCounts zuweisen [] funktioniert aus irgendeinem Grund nicht ... – user3768997

+1

Was meinst du mit 'nicht funktioniert'? Sie bekommen ein paar Fehler? Wenn ja, welcher Fehler? Fügen Sie einen Stapel ein. – GurV

Antwort

0

Es gibt ein paar Probleme mit Ihrem Code. Ihr Gesamtproblem ergibt sich jedoch wahrscheinlich aus der Tatsache, dass Sie zweimal jede Schleife i inkrementieren; einmal in der for-Schleife selbst, einmal im Körper nahe dem Ende.

Ein anderes Problem könnte darin bestehen, wie Sie alphabet definieren. Sind Sie sicher, dass es die Werte der ASCII-Zeichen "a" bis "z" enthält? Und sind Sie für den Fall verantwortlich? Es gibt auch keinen Grund, ein separates Array zu verwenden, Sie können direkt von dem Wert j mit entsprechender Anpassung abweichen.

+0

Ja. Aber wie kann ich die Werte zum int-Array hinzufügen? – user3768997

+0

Die Art, wie Sie die Werte hinzufügen, wenn sie korrekt sind. Ich vermute, es ist der Rest Ihres Codes, der dazu führt, dass die Anzahl 0 ist. – Iluvatar

+0

Wenn ich System.out.println (Alphabet [i] + "\ t \ t" + Häufigkeit); Ich bekomme alle Buchstaben a-z mit der entsprechenden Häufigkeit oder 0, wenn der Buchstabe nicht in der Zeichenfolge erscheint. Wenn ich jedoch versuche, diese Frequenzen in die AlphaCounts [] einzufügen, füge ich 0 ein. – user3768997

1

ist hier ein Stück Code

die Häufigkeit der Alphabete zu finden
String input = "abcaaasdasdasd"; 
int freqarray[] = new int[26]; 
input = input.toUpperCase(); 
for(int i=0;i<input.length();i++) 
{ 
    freqarray[input.charAt(i)-'A']++; 
} 
Verwandte Themen