Ich habe folgende Aufgabe über's Wochenende bekommen:
Ich soll ein Java-Programm erstellen, dass aus einer main und 3 Methoden besteht. Die erste Methode soll ein Array aus einer Textdatei lesen und diese an die zweite Methode weitergeben. Die zweite soll dann den kleinsten und größten Wert bestimmen und das an die dritte Methode weitergeben. Die dritte soll dann die beiden Werte als println ausgeben. Die main soll lediglich die drei Methoden "verbinden".
Minimum und Maximum bestimmen funktioniert, das einlesen aus der Datei und in ein Array schreiben funktioniert auch. Ich kriegs nur aufn Tod nicht hin, dass die Methoden das weitergeben und aus unserem Skript werd ich auch nicht schlau.
Das Überreichen von Daten an Methoden geschieht über sogenannte Parameter. Diese werden in den runden Klammern der Methode definiert und beim Methodenaufruf angegeben.
Die Methode addiert in dem Beispiel also die Zahlen 3 und 9 und liefert sie zurück. int ist der Rückgabetyp. Jeder Datentyp ist hier erlaubt. Wenn es keine Rückgabe (kein return) gibt, gibt man void als Rückgabetyp an.
Einzelne Methoden können auch in anderen Methoden aufgerufen werden. So verbindest du sie dann. Oder du übergibst z. B. die zahlAddieren-Methode als Parameter, wenn ein int-Parameter erwartet wird. Wichtig ist, dass die übergebene Methode dann ein return haben muss, da ja nur das Ergebnis verarbeitet werden soll.
Danke schonmal. Also meine Methode für Minimum/Maximum sieht jetzt so aus "static double [] minMax (double[]feld){....}. Die soll laut Aufgabenstellung so aussehen. Was muss die jetzt bekommen und was muss sie returnen damit ich das mit meiner Ausgabe-Methode aufgreifen kann. Die Ausgabe sieht so aus "static void ausgabe (double [] result){System.out.println(weiß ich nicht was da rein kommt)}.
Dazu sollte ich sagen wir dürfen kein Eclipse verwenden weil wir erst lernen sollen wie das mit Editor und Compiler in der Dos-Shell funktioniert.
Zuerst setze bitte deinen Code in [code ]...[/code]-Blöcke. Die Ausgabe gibt einfach den Parameternamen in der System.out.println() aus. Was deine minMax-Methode kriegt ist egal - die bekommt das, was sie zum arbeiten benötigt. Zurückgeben muss sie das was bereits vor dem Namen als Rückgabetyp steht. Merk dir das Ergebnis in einer Variabel und gebe das mithilfe von return zurück.
static double [] minMax (double [] feld)
for (int i=0; i<feld.length; i++){
maximum=0
if (feld > maximum){
maximum=feld
}//maximum
So allerdings weiß ich jetzt nicht genau was returned werden muss oder ob das so überhaupt richtig ist. An sich funktioniert die for-Schleife ja so wie sie ist. Allerdings weiß ich eben nicht was die Methode returned.
So wie sie ist, gibt sie gar nichts zurück. Sie berechnet nur etwas. Sie muss einen double-Wert zurückliefern. Wie wäre es mit deinem berechneten Maximum? Geh deine Schleife nochmal logisch durch, ggf. auf Papier. Stimmt das maximum = 0 so? Du musst auf einen Wert im Array zugreifen - mithilfe deines Indexes i. Feld selber ist nur das Array, kein Wert daraus.
Oh Mist, hab bei feld das [ i ] für die Schleife vergessen. Also meine Methode erhält doch ein Array und speichert die Werte des Arrays mit der Variable feld. Dann setze ich mein Maximum auf 0, da sonst der Fehler auftritt, dass der Compiler mir ausspuckt "maximum might not have been initialized" oder so ^^. Die Schleife schaut sich nach und nach jeden Wert in dem Array feld an und vergleicht mit Maximum. Dann hab ich mein Maximum, das müsste so stimmen.
Meine Methode soll dann den Wert Maximum, zusammen mit einem Wert Minimum (der da auch berechnet wird in der Methode minMax) zusammen in ein Array schreiben und das returnen. Wie genau mach ich das ohne, dass es zu Fehlern kommt?
Dein Initialisieren von Maximum ist an der falschen Stelle . Prüfe das logisch nochmal. So wie es jetzt ist wird maximum in jedem Durchlauf auf 0 gesetzt. Das kann nicht gewollt sein.
Nachdem deine Methode etwas mithilfe von return zurückgibt, kannst du sie auch als Parameter an andere Methoden übergeben und dann entsprechend ausgeben lassen.