Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Prüfe, ob die im String Array enthaltenen Strings aufsteigend sind.
folgendes: Bei meiner Aufgabe geht es darum das ein übergebenes String Array darauf getestet wird ob die einzelnen Strings der Reihe nach aufsteigend sind von ihrer Länge her.
Rückgabe wenn richtig true sonst false.
Meine Idee: die Strings in chars umzuwandeln und anschließend die Länge der einzelnen Einheiten im Char-Array zu vergleichen.
Code:
public boolean aufsteigendSortiert(char[] a)
{
for (int i = 0; i < a.length-1; i++) {
if (a[i] > a[i+1]) { // für int[] array allerdings bei char Planlos
return false;
}
}
return true;
}
Zerlege doch die Aufgabe.
1. Schreibe einen Algorithmus, der dir überprüft ob ein int-array aufsteigend sortiert ist
2. Schreibe einen Algorithmus der dir dein String-array in ein array mit deren Länge umwandelt (Tipp: String.length() gibt dir die Länge eines Strings zurück)
3. Schritt 2 aufrufen -> Resultat in Schritt 1 überprüfen
4. Fertig
public static boolean sortierenNachLaenge(String[] strings) {
int laenge = strings.length;
int[] intArray = new int[laenge];
for(int i = 0; i < strings.length;i++){
String str = strings[i];
intArray[i] = str.length();
}
for(int j = 0; j < intArray.length; j++){
if(intArray[j]< intArray[j+1]){
return true;
}
}
return false;
}
Ok vielen Dank schon einmal.
Der Code funktioniert fast.
4 von 7 übergebenen Beispiel String Arrays erkennt er richtig. Leider kann ich diese nicht sehen. Sieht noch jemand einen Fehler.
Geh doch nochmal die zweite Schleife durch. Checkt sie alle Stellen im Array? Es sollte doch so sein, wenn eins nicht passt sollte sofort false geliefert werden. Falls alles passt, dann sollte true zurückgegeben werden.
j++ ist dead Code weil auf jeden Fall nach einem Durchlauf die Methode mit einer return Anweisung verlassen wird.
Es kommt also nicht zu mehr als einem Schleifendurchlauf.
IF ... ELSE bedeutet dass in jedem erdenklichen Fall etwas gemacht wird.
Für dich heißt es dass auf jeden Fall die Methode in der for-Schleife im ersten Durchlauf mit einer return Anweisung beendet wird.
Was du brauchst ist aber: Verlasse die Methode nur wenn etwas gefunden wurde, ansonsten mache weiter.
egal wie ich es drehe verlässt er die schleife.
Eine while schleife funktioniert so auch noch nicht. Vllt stehe ich einfach auf dem Schlauch..
wäre um die Lösung Dankbar ärgere mich schon viel zu lang mit der "kleinen" aufgabe :/
Mach den else Zweig weg und return in der Schleife nur dann ( mit false ) wenn du ein Paar findest welches nicht aufsteigend sortiert ist. Solltest du die Liste ohne return durchlaufen haben musst du ganz am Ende noch true zurück geben.
Es kommen noch so viele Aufgaben die mich verzweifeln lassen werden und hofftl den aha Effekt mit sich bringen.
Hab die aufgabe auf jeden Fall soweit verstanden und bin Dankbar..