Anzahl bestimmter Zeichen in einer Zeichenkette (Java)
Ich habe eine Hausaufgabe zum zählen bestimmter Zeichen in der Zeichenfolge.
Beispiel: string = "America"
Sollte die Ausgabe = a appear 2 times, m appear 1 time, e appear 1 time, r appear 1 time, i appear 1 time and c appear 1 time
public class switchbobo {
/**
* @param args
*/ //TODO Auto-generated method stub
public static void main(String[] args){
String s = "BUNANA";
String lower = s.toLowerCase();
char[] c = lower.toCharArray(); //converting to a char array
int freq =0, freq2 = 0,freq3 = 0,freq4=0,freq5 = 0;
for(int i = 0; i< c.length;i++) {
if(c[i]=='a') //looking for 'a' only
freq++;
if(c[i]=='b')
freq2++;
if (c[i]=='c') {
freq3++;
}
if (c[i]=='d') {
freq4++;
}
}
System.out.println("Total chars "+c.length);
if (freq > 0) {
System.out.println("Number of 'a' are "+freq);
}
}
}
code oben ist, was ich getan habe, aber ich denke, es ist nicht sinnvoll, 26 Variablen (eine für jeden Buchstaben). Habt Ihr alternative Ergebnis?
- Verwenden Sie ein array mit 26 die Indizes. (
'a'-'a' == 0, 'b' - 'a' == 1
, und so weiter und so Fort).
Du musst angemeldet sein, um einen Kommentar abzugeben.
Offensichtlich Ihre intuition, dass eine variable für jeden richtigen Buchstaben.
Das problem ist, dass man keine automatisierte Möglichkeit, um die gleiche Arbeit tun, die auf verschiedenen Variablen, Sie haben keine triviale syntax, die Ihnen hilft, die gleiche Arbeit (zählen, ein einzelnes char-Frequenz), die für 26 verschiedene Variablen.
Also, was könnte Sie tun? Ich ' ll-Hinweis, die Sie auf zwei Lösungen:
a-z
Indizes0-25
, was irgendwie trivial ist Sie Grund, über die ASCII-Kodierung)HashMap<Zeichen, Integer>
das ist ein assoziativer container, der in dieser situation können Sie Nummern zugeordnet, um bestimmte Zeichen, so dass es perfekt zu Ihren Anforderungen passtMultiset<Character>
, aber das ist wahrscheinlich overkill für die Hausaufgaben 🙂Können Sie
HashMap
Charakter-Schlüssel und Integer Wert.Durchlaufen den string
Dies ist ein pseudo-code, und Sie müssen versuchen, die Codierung
Bin ich mit einer HashMap für die Lösung.
Produziert Ausgabe -
{U=2, A=3, B=2, N=3}
In der Fortsetzung zu Jack ' s beantworten Sie die folgenden code, könnte Ihre Lösung. Es nutzt ein array zum speichern der Frequenz der Zeichen.
Wird es geben Sie die folgende Ausgabe:
When an arithmetic operation is performed between a character and an integer, it is actually performed between the ascii value of the character and the integer. The result of such operation is also an integer.
Der ascii-Wert von 'a' ist 97!!vielleicht können Sie diese
Beispiel:
Char Count 'l' in der Zeichenkette.
oder