Hallo zusammen,
bin noch ziemlich neu in Java und komme gerade bei einer Aufgabe nicht weiter.
Ziel ist es die längste Konsonantenfolge eines Wortes zu ermitteln.
[CODE lang="java" title="Konsonantenzähler"] static int countKons(String a) {
String cons = "bcdfghjklmnpqrstvwxz";
int count = 0;
int wordLength = a.length();
char[] letters = new char[wordLength];
// Wandelt Wort in CharArray in Kleinbuchstaben um
for (int i = 0; i < wordLength; i++) {
letters = Character.toLowerCase(a.charAt(i));
}
for(int j = 0; j < letters.length; j++){
char let = letters[j];
for(int k = 0; k < cons.length(); k++) {
char con = cons.charAt(k);
if(let == con) count++;
else count = 0;
}
}
return count;[/CODE]
Kurze Erklärung: Die Methode bekommt ein Wort als String und wandelt es zunächst in ein char-Array (letters) um. (Ließe sich sicher auch vereinfachen, aber ich bin ja noch am üben
)
Gegeben sind im String cons alle Konsonanten. Mit der ersten For-Schleife durchlaufe ich dann das Array letters und mit der 2. Schleife den Konsonanten-String.
Stimmen die Zeichen überein, dann wird der counter um 1 erhöht.
Das Problem: Lasse ich die else-Anweisung in der 2. For-Schleife weg, erhalte ich die Gesamtanzahl der Konsonanten eines Wortes.
Als Beispiel das Wort "Test". Beinhaltet 3 Konsonanten.
Da ich aber die längste Konsonantenfolge erhalten möchte ("st") also 2, funktioniert das Ganze so leider nicht.
Mit der else-Anweisung bekomme ich dann 0 heraus, weil die 2. For-Schleife ja weiter den Konsonantenstring durchläuft und dann den Counter zurücksetzt.
Könnte mir da jemand weiterhelfen? Wenn mein Lösungsansatz so überhaupt keinen Sinn macht, dann bitte einfach sagen. In dem Falle werde ich mir was Neues ausdenken. Würde aber - wenns denn möglich ist - eig. gern bei diesem Ansatz bleiben und hab das Gefühl das ich einfach nur zu doof bin hier die If und else Anweisungen anzupassen.
bin noch ziemlich neu in Java und komme gerade bei einer Aufgabe nicht weiter.
Ziel ist es die längste Konsonantenfolge eines Wortes zu ermitteln.
[CODE lang="java" title="Konsonantenzähler"] static int countKons(String a) {
String cons = "bcdfghjklmnpqrstvwxz";
int count = 0;
int wordLength = a.length();
char[] letters = new char[wordLength];
// Wandelt Wort in CharArray in Kleinbuchstaben um
for (int i = 0; i < wordLength; i++) {
letters = Character.toLowerCase(a.charAt(i));
}
for(int j = 0; j < letters.length; j++){
char let = letters[j];
for(int k = 0; k < cons.length(); k++) {
char con = cons.charAt(k);
if(let == con) count++;
else count = 0;
}
}
return count;[/CODE]
Kurze Erklärung: Die Methode bekommt ein Wort als String und wandelt es zunächst in ein char-Array (letters) um. (Ließe sich sicher auch vereinfachen, aber ich bin ja noch am üben
Gegeben sind im String cons alle Konsonanten. Mit der ersten For-Schleife durchlaufe ich dann das Array letters und mit der 2. Schleife den Konsonanten-String.
Stimmen die Zeichen überein, dann wird der counter um 1 erhöht.
Das Problem: Lasse ich die else-Anweisung in der 2. For-Schleife weg, erhalte ich die Gesamtanzahl der Konsonanten eines Wortes.
Als Beispiel das Wort "Test". Beinhaltet 3 Konsonanten.
Da ich aber die längste Konsonantenfolge erhalten möchte ("st") also 2, funktioniert das Ganze so leider nicht.
Mit der else-Anweisung bekomme ich dann 0 heraus, weil die 2. For-Schleife ja weiter den Konsonantenstring durchläuft und dann den Counter zurücksetzt.
Könnte mir da jemand weiterhelfen? Wenn mein Lösungsansatz so überhaupt keinen Sinn macht, dann bitte einfach sagen. In dem Falle werde ich mir was Neues ausdenken. Würde aber - wenns denn möglich ist - eig. gern bei diesem Ansatz bleiben und hab das Gefühl das ich einfach nur zu doof bin hier die If und else Anweisungen anzupassen.