Brauche Hilfe, Java-Kenner da draußen?

... komplette Frage anzeigen

4 Antworten

I ist ein Integer deine Funktion erwartet aber nach der Deklaration nach ein Int Array als Rückgabewert.

Wenn die Rückgabe von i gewünscht ist musst du in der Funktionsdeklaration das int[] durch ein int ersetzen.

Antwort bewerten Vielen Dank für Deine Bewertung

Das Problem ist genau was die Fehlermeldung sagt:

Du möchtest die Variable i zurückgeben, diese hast du als static int definiert (was eine Rückgabe meist überflüssig macht), aber die Methode hast du mit dem Rückgabetyp int[] definiert. Das widerspricht sich.

Entweder du änderst den Rückgabetyp oder gibst ein int-Array zurück.

Ich würde dir empfehlen weniger mit globalen Variablen zu arbeiten, außer als Attribute des Objekts, das sorgt schnell für Schwierigkeiten wie hier und ist daher schlechter Stil, versuch es nur mit Parameterübergaben und lokalen Variablen zu lösen.

Gerade in deinem Programm sind die globalen Variablen gänzlich unnötig und werden teilweise mehrfach überschrieben.

Außerdem wird die Ausgabe in der main-Methode so nicht wie gewünscht funktionieren, du hast vergessen auf die Indizes des zurückgegeben Arrays zuzugreifen.

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von dodoG0097
10.10.2016, 16:09

was sollte ich denn an code noch hinzuaddieren?...ich bin grad etwas überfordert xD

gut und alle deine vorschläge habe ich berücksichtigt dankeschön :)

0

Deine Funktion ist mit dem Rückgabewert int[] (Array) angelegt, du gibst aber einen int (Einzelwert) zurück, das geht nicht.

Antwort bewerten Vielen Dank für Deine Bewertung

Der Rückgabetyp deiner Funktion ist vom Typ int[]  - also einem Array von ganzen Zahlen. Du gibst jedoch in deiner return-anweisung die Variable i zurück welche vom Typ int ist.

Ich vermute dass du das sortierte Array zurückgeben möchtest. Da du die sortierung inplace durchführst, also das übergebene Array veränderst, musst du einfach return i; durch return array; ersetzen.

Zusätzliches zum Codestil:

Du definierst zwei statische Klassenvariablen namens i und a. Soweit ich das sehe verwendest du i nur in der Funktion shakerSort, also solltest du sie lieber dort als lokale Variable definieren - tatsächlich könntest du sie ganz rausmachen und sie stattdessen im kopf der for-schleife definieren.

Die Variable a scheint nirgendwo verwendet zu werden, also kann die ganz raus.

Du gibst in der main-funktion das Array gleich mehrmals aus - dabei reicht es doch einmal. Die Schleife erscheint mir unnötig.

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von DexterNemrod
10.10.2016, 15:48

Ansonsten bist du inkonsequent in der Art, wie du ein Array definierst -
in der statischen Variable oben (die eigentlich auch besser lokal in
der Main-Funktion aufgehoben wäre) schreibst du int[] array, hingegen in
der Signatur der shakerSort Funktion int array[]. Du solltest dich hier
auf eine einheitliche Schreibweise festlegen.

1
Kommentar von dodoG0097
10.10.2016, 16:07

wenn ich es durch array ersetze kommt folgendes raus

[I@15db9742
[I@15db9742
[I@15db9742
[I@15db9742
[I@15db9742
[I@15db9742
[I@15db9742

irwo muss noch ein fehler sein :D

und danke für die nützlichen tipps^^

0