[Java] 2 Funktionen als Return - Wert.. Geht das?

topfklao

Christoph N.
ID: 118468
L
20 April 2006
885
17
Hi Hi!!


Ich hab schon wieder eine Frage.... :roll:

Die erklärt sich am besten anhand eines Beispieles:

(Test ist eine beliebige Klasse!)

Test funktion(4) {
//Nun möchte ich 2mal die Funktion "funktion" als Return - Wert aufrufen:
System.out.print("enddddddddlos :D " );

return funktion(2) ??? funktion(1);

}

Wie kann ich das machen?
Danke für eure Hilfen!
icon7.gif
 
Hi,

also erstmal sind das Methoden, keine Funktionen. Zum zweiten musst du bei Java einen RückgabeTyp angeben, und selbstverständlich kannst du nur ein Objekt von genau diesem Typ zurückgeben.

PlaciD
 
Wenn Du ein Konstrukt wie return f(x); hinschreibst, heißt das, daß f(x) ausgeführt wird und das Ergebnis returned wird. Wenn du möchtest, daß f(x) und g(y) ausgeführt werden bevor die Methode zurückkehrt, dann schreib' halt

f(x);
g(x);
return;

Klar ist (und das ist auch gut so): Du kannst immer nur einen einzigen Wert zurückgeben. Das kann natürlich die Instanz einer Klasse sein oder ein primitiver Datentyp. Würdest Du eine funktionale Programmiersprache wie ML oder Haskell nutzen, dann könntest Du auch Funktionen zurückgeben, denn in solchen Sprachen sind Funktionen Objekte erster Ordnung. Aber das führt hier zu weit...

Wenn Du etwa eine Funktion willst, die Nullstellen eines Polynoms berechnen soll, dann mußt DU schon eine Liste der Nullstellen oder ein Array oder sowas zurückgeben.
 
Nun ja, du kannst ja die Ergebnisse als Member einer Klasse zurückgeben.

Code:
type_a f(<parameters for f>);
type_b g(<parameters for g>);

class package {
  public:
    package(type_a res_f, type_b res_g)
      : result_of_f(res_f), result_of_g(res_g)
    {
        // nothing else to be done...
    }
    type_a result_of_f;
    type_b result_of_g;
}

package foo(<paramters for foo>)
{
    [...]
    return package(f(bla), g(flubber));
}

Der Code ist C++, ich habe schon so lange nimmer Java gecoded... Aber in Java geht das analog.

Du kannst natürlich auch etwas in der art Coden:
Code:
int summe_1_bis_n(int n)
{
    if (n == 1)
    {
        return n;
    }
    else
    {
         return n + summe_1_bis_n(n-1);
    }
}
 
Zuletzt bearbeitet:
dann übergib ein array von daten. also in deinem fall zwei. oder bau dir ein return-objekt was genau diese zwei werte enthält?