Java Umprogrammierung von Insertionsort zu Mergesort

Status
Für weitere Antworten geschlossen.
Limette24 schrieb:
Aber wenn man dann mal jemanden drauf anspricht heißt es nur "Der Lehrer kann da nichts für" ... Jaja.
Informatik werde ich wahrscheinlich aus dem Abi rausnehmen müssen..
Na so weit ist es ja noch nicht. Das kannst du alles aufholen.
http://openbook.galileocomputing.de/javainsel/

Aber es ist didaktisch fragwürdig schon mit etwas komplexeren Algorithmen zu arbeiten wenn die Grundlagen noch nicht mal vernünftig vermittelt wurden.

public ---- MergeSort()
Für das ---- muss der Datentyp angegeben werden, der von der Funktion zurückgegeben wird. Du gibst zwei Dinge zurück
return zahlenfeld;
return mergeArrays(left,right);
Was für ein Datentyp ist Zahlenfeld? Und was für einen Datentyp liefert mergeArrays(left,right) zurück? Wenn mergeArrays(left,right) etwas zurückliefert, dass nicht den gleichen Datentyp wie Zahlenfeld hat musst du dir Gedanken machen wie du das anders schreiben kannst. Alle return-Anweisungen in dieser Funktion müssen den gleichen Datentyp zurückgeben. Wenn das der Fall ist schreibst du diesen Datentyp an die Stelle der -----
 
Soweit so gut..
 

Anhänge

  • Fehler.jpg
    Fehler.jpg
    306,7 KB · Aufrufe: 477
Lass mich raten: Euer Lehrer hat euch auch nicht beigebracht, Methoden mit Parametern zu schreiben?
 
Unser aktueller Lehrer bringt uns irgendwie gar nichts bei, wir sind quasi nur noch am raten...
Und dann wird sich gewundert, weshalb wir am ende der Stunde nicht weitergekommen sind..
 
Während du dich über Methoden-Parameter schlau machst, hier ein Tipp: IDEs wie BlueJ sagen dir nicht nur wo etwas hakt, sonder meist auch was, in diesem Fall steht das Problem am unteren Bildschirmrand. Englisch kannst du schon, oder?

Ich frage mich auch, wie kompetent denn der alte Lehrer im Vermitteln von Lehrstoff war. Denn Klassenerstellung, -Vererbung und -Instantiierung hat er euch anscheinen lehren können, nicht jedoch, wie man Methoden mit Rückgabewert (außer void) und Parametern schreibt.
 
Englisch kann ich, natürlich ...

Was mache ich falsch?
 

Anhänge

  • Fehler.png
    Fehler.png
    9,5 KB · Aufrufe: 223
In diesem Screenshot steht immer noch die selbe Fehlermeldung, wie im ersten.
Mal frei übersetzt: Du versucht MergeSort ein Argument zu übergeben, obwohl keines erwartet wird. Das lässt zwei logische Schlüsse zu:
1. Du übergibst fälschlicherweise zu viele Argumente an die Methode.
2. Du hast die Methode falsch deklariert.
 
Deine Methode sollte so aussehen:

Code:
public int [] MergeSort(int [] array) {

    // SOME MORE CODE HERE...

    left = MergeSort(left);
    right = MergeSort(right);

    return mergeArrays(left, right);
}

Dein Fehler ist, dass deine Methode keine Übergabeparameter annimmt, weil do sie so deklariert hast:
Code:
public int [] MergeSort()
Diese Methode kann zwar ein Integer Array zurückgeben, aber kein Array als Parameter übernehmen.
Sie kann also nur so aufgerufen werden: "left = MergeSort()" was natürlich keinen Sinn ergibt.

Wenn du ein Integer-Array an die Methode übergeben möchtest, musst du sie so deklarieren:
Code:
public int [] MergeSort(int [] array)

Nun kann zB "left = MergeSort(left);" auch funktionieren. (wenn es sich bei "left" um ein Integer-Array handelt)

Übrigens, werden laut Java-Coding Guidelines normalerweise nur Klassennamen groß geschrieben.
Methodennamen schreibt man am Anfang klein.

Also "mergeSort(...)" und nicht "MergeSort(...)".
 
Status
Für weitere Antworten geschlossen.

Ähnliche Themen

Antworten
12
Aufrufe
1.866
1
Zurück
Oben