Tidus Geschrieben 26. Februar 2009 Teilen Geschrieben 26. Februar 2009 Hallo ich habe mal eine Frage. ich bin schon ziemlich geübt im Programmieren, allerdings habe ich nicht viel Erfahrungen mit Arrays, bezüglich des Hamster Simulators von Java. Meine Aufgabe ist es, fünf Werte, die als Körner auf fünf Feldern hintereinander liegen, aufzunehmen und in ein Array zu Speichern. Mein jetztiger Code sieht so aus: void main() { int felder = 5; int counter = 0; int werte = 0; int[] anzahl = new int [5]; anzahl[0] = 0; anzahl[1] = 0; anzahl[2] = 0; anzahl[3] = 0; anzahl[4] = 0; while(felder>0&&vornFrei()) { vor(); while(kornDa()) { nimm(); werte++; } anzahl[counter] = werte; werte = 0; counter++; felder--; } } Die Körner werden alle aufgenommen und dem dazu passenden Array auch als Wert zugewiesen. Jetzt kommt der Clou. Die Werte sollen der größe nach sortiert, und dann wieder abgelegt werden. Ich habe jetzt vor die obige Prozedur, als int Funktion zu schreiben, und die gespeicherten Werte des Arrays in eine weitere Funktion zu übergeben, in der ich dann die Sortierung vor nehmen werde. Ich weiß aber nicht wie ich das ganze Array mit den Werten mit "return" übergeben kann Kann mir da vielleicht jemand helfen? mit: return anzahl[]; return anzahl; und vielen weiteren Möglichkeiten habe ich es schon probiert. Allerdings Syntaxfehler. Vielen Dank im Voraus Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Dragon8 Geschrieben 26. Februar 2009 Teilen Geschrieben 26. Februar 2009 Also ich gehe mal davon aus, dass du dein Array aus der Funktioni, die dieses Array sortiert hat, zurück geben willst. Dann funktioniert das ganz einfach wie du schon geschrieben hast, indem du einfch return anzahl; schreibst, wobei anzahl dann ja dein Array ist. Du solltest nur dran denken, dass deine Funktion dann als Rückgabewert auch int[] hat. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Tidus Geschrieben 26. Februar 2009 Autor Teilen Geschrieben 26. Februar 2009 Moment moment. Also das Array ist nocht gar nicht sortiert. die Werte sind nur gespeichert. Ich möchte jetzt das ganze Array in eine andere Funktion mit "return" übergeben, und es dort weiter zu verarbeiten. und return anzahl; klappt nicht Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Dragon8 Geschrieben 26. Februar 2009 Teilen Geschrieben 26. Februar 2009 Also mit return gibst du das Ergebnis einer Funktion aus dieser zurück, aber damit übergibst du keine Werte an eine Funktion. Werte an eine Funktion übergibt man über Parameter: public int[] sort([B]int[] array[/B]) {} Und die Funktion rufst du dann wie folgt auf: int[] erg = sort(anzahl) Das sollte aber eigentlich klar sein, wenn man schon etwas geübt im Programmieren ist PS: Ist es eigentlich nur Zufall, dass hier gerade gleichzeitig 2 Threads zu diesem komischen "Java Hamster Simulator" offen sind? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Tidus Geschrieben 26. Februar 2009 Autor Teilen Geschrieben 26. Februar 2009 jaaaa das weiß ich doch alles. die funktion in der das array übergeben werden soll, schreibe ich ja noch. aber mir gehts jetzt erstmal darum, das ich das array aus der jetztigen funktion, iwie mit return rausbekomme. ich würde dann die zurueckgelieferten werte von return in ein weiteres globales array speichern. aber ich kenne die syntax dafür nicht. ich will nur wissen wir man ein array zurueckliefert Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Tidus Geschrieben 26. Februar 2009 Autor Teilen Geschrieben 26. Februar 2009 sowas wie: ////bla bla bla hier steht der ganze code /// bla und das array wird erzeugt und mit werten gefüllt return --->hier soll jetzt stehen wie ich das schreiben muss damit ich das array anzahl übergeben kann<---------- funcition ende Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Dragon8 Geschrieben 26. Februar 2009 Teilen Geschrieben 26. Februar 2009 Dann noch immer mit return anzahl in deinem Fall. Aber wie schon geschrieben, dazu muss der Rückgabewert deiner Funktion auch int[] sein, sonst wirste da immer nen Fehler bekommen. Und wenn ich jetzt davon ausgehe dass die Funktion, die du meinst deine main-Funktion ist, ist bei der zurzeit noch immer void, also nichts, der Rückgabewert. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Tidus Geschrieben 26. Februar 2009 Autor Teilen Geschrieben 26. Februar 2009 Also lag es an meinem funktionskopf, das er bei "return anzahl" die Fehlermeldung ausgegeben hat. aber ich bekomm den funktionskopf iwie nicht hin was ist hier falsch? int funktionZumSortieren (int [] anzahl) { } Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Dragon8 Geschrieben 26. Februar 2009 Teilen Geschrieben 26. Februar 2009 Ihc zitiere mich einfach mal selbst... public[B] int[] [/B]sort([B]int[] array[/B]) {} Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Tidus Geschrieben 26. Februar 2009 Autor Teilen Geschrieben 26. Februar 2009 sorry aber das passt hier hinten und vorne nicht... mein code ist jetzt wie folgt: void main() { laufeUndSammle(); funktionZumSortieren(); } int [] laufeUndSammle() { int felder = 5; int counter = 0; int werte = 0; int[] anzahl = new int [5]; anzahl[0] = 0; anzahl[1] = 0; anzahl[2] = 0; anzahl[3] = 0; anzahl[4] = 0; while(felder>0&&vornFrei()) { vor(); while(kornDa()) { nimm(); werte++; } anzahl[counter] = werte; werte = 0; counter++; felder--; } return anzahl; } int [] funktionZumSortieren(int[] anzahl) { bums code } sag mal bitte ganz konkret was hier nicht hin haut sonst hätt ich noch ne frage: bei einer int-funktion kann man den wert mit der variable einfach über return übergeben und in eine weitere variable speichern.. bsp: int zahl = funktionDieWasBerechnet(); geht sowas auch mit einer array übergabe? int[] array = new int [laufeUndSammleEin()]; oder so? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
perdian Geschrieben 26. Februar 2009 Teilen Geschrieben 26. Februar 2009 Meine Güte, was du hier alles durcheinander schmeißt... So wie ich das sehe hilft hier kein Vorkauen der Details. Fang nochmal von vorne mit einem Tutorial/Buch zu Java-Programmierung an und lass die ersten Kapitel nicht aus. Du willst schon das Erdgeschoß bauen bevor das Fundament trocken ist - und das funktioniert nicht. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
ShamaN Geschrieben 27. Februar 2009 Teilen Geschrieben 27. Februar 2009 (bearbeitet) Ich füge mal ein paar Kommentare in deinen Code ein void main() { /* da die funktion laufeUndSammle() einen rückgabewert hat solltest du den auch auffangen z.B. int[] anzahl = laufUndSammle(); anzahl2 ist jetz das gleiche wie das anzahl welches du mit return zurückgibst, nicht aber das selbe*/ laufeUndSammle(); /* gleiches gilt hier, jedoch fehlt anzahl als parameter */ funktionZumSortieren(); } int [] laufeUndSammle() { int felder = 5; int counter = 0; int werte = 0; /* hier solltest du vllt darüber nachdenken das ganze etwas dynamischer zu gestalten z.B. int[] anzahl = new int[felder]; for(int i = 0; i < felder; i ++) {anzahl[i] = 0;} jetzt könntest du z.B. felder von der main ind laufUndSammle übergeben*/ int[] anzahl = new int [5]; anzahl[0] = 0; anzahl[1] = 0; anzahl[2] = 0; anzahl[3] = 0; anzahl[4] = 0; while(felder>0&&vornFrei()) { vor(); while(kornDa()) { nimm(); werte++; } anzahl[counter] = werte; werte = 0; counter++; felder--; } return anzahl; } int [] funktionZumSortieren(int[] anzahl) { bums code } // denk aber an das return in dieser funktion bei einer int-funktion kann man den wert mit der variable einfach über return übergeben und in eine weitere variable speichern.. bsp: int zahl = funktionDieWasBerechnet(); geht sowas auch mit einer array übergabe? klar, mit allen objekten links vom zuweisungsoperator(=) muss lediglich ein objekt vom gleichen typ des rückgabewertes der funktion rechts vom zuweisungsoperator stehen int[] array = laufeUndSammleEin(); wie oben bereits erwähnt. Bearbeitet 27. Februar 2009 von ShamaN Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.