Moin zusammen,
meine Aufgabe ist es, einen Text aus mehreren Wörtern zu lesen und für jedes Wort die längste darin auftretende Folge von Konsonanten zu berechnen. Jedes Wort soll zusammen mit der Länge seiner längsten Konsonantenfolge ausgegeben werden.
Von meinem Verständnis her sieht der Code schon ganz gut (mal davon abgesehen, dass man ihn noch optimieren kann, geht erstmal um die Funktionalität).
Hier ist der Code:
Folgendes Problem:
Beim ersten Durchgehen im Debugger setzt er
i = 0 und ch = I. Soweit alles gut.
Nach der Prüfung, ob es ein Buchstabe ist, geht er in die if-Abfrage.
Obwohl hier
Warum tut er das? Nach meinem Verständnis müsste er doch in dem Fall in den else-Zweig gehen.
Wo ist mein Denkfehler?
Ich bin sehr dankbar für eure Hilfe.
meine Aufgabe ist es, einen Text aus mehreren Wörtern zu lesen und für jedes Wort die längste darin auftretende Folge von Konsonanten zu berechnen. Jedes Wort soll zusammen mit der Länge seiner längsten Konsonantenfolge ausgegeben werden.
Von meinem Verständnis her sieht der Code schon ganz gut (mal davon abgesehen, dass man ihn noch optimieren kann, geht erstmal um die Funktionalität).
Hier ist der Code:
Java:
static void konsonant (char[] array){
int i; char ch;
int sum = 0;
int len = 0;
for (i = 0; i < array.length; i++){
ch = array[i];
// ch wird nacheinander jedes Zeichen des Zeichenarrays zugewiesen
if (Character.isLetter(ch)){
Out.print(ch);
if (array[i] != 'a' || array[i] != 'A' || array[i] != 'e' || array[i] != 'E' ||
array[i] != 'i' || array[i] != 'I' || array[i] != 'o' || array[i] != 'O' ||
array[i] != 'u' || array[i] != 'U' ){
sum += 1;}
else {
len = sum;
sum = 0; }
} else {
Out.print(" -> Längste Folge ist: " + len);
Out.println();
sum = 0;
}
}
}
public static void main(String[] args) {
String text = new String("In der Deutschschweiz gibt es viel Weihnachtsschmuck.");
// Hier wird der zu untersuchende Text eingegeben und als String gespeichert.
char[] array = text.toCharArray();
// Der Text wird zum CharArray transformiert, sodass die einzelnen Zeichen abfragbar gemacht werden
konsonant(array);
}
}
Folgendes Problem:
Beim ersten Durchgehen im Debugger setzt er
i = 0 und ch = I. Soweit alles gut.
Nach der Prüfung, ob es ein Buchstabe ist, geht er in die if-Abfrage.
Obwohl hier
if (array != 'I')
steht, summiert er die trotzdem mit 1.Warum tut er das? Nach meinem Verständnis müsste er doch in dem Fall in den else-Zweig gehen.
Wo ist mein Denkfehler?
Ich bin sehr dankbar für eure Hilfe.
Zuletzt bearbeitet von einem Moderator: