Noch einmal Methoden

orangata

Mitglied
Gehen Sie für diese Aufgabe davon aus, dass in einer Klasse Meth Methoden mit den folgenden Signa- turen definiert wurden:
• public static void a(int x);
• public static int b(int x, String y);
Geben Sie für jede der folgenden Anweisungen an, ob diese in Java korrekt sind. Geben Sie bei inkor-
rekten Anweisungen eine kurze Begründung bzw. Beschreibung des Fehlers an:
1. Meth.a(15, 6);
2. Meth.a(15 + 6);
3. Meth.a(Meth.b(23, "vier" ));
4. Meth.b("acht\" , 8);

Meine Lösung:
1. Meth.a(15, 6);
inkorrekt: In diesem Falle waere x zweimal belegt,
was nicht moeglich ist.
2. Meth.a(15 + 6);
korrekt
3. Meth.a(Meth.b(23, "vier" ));
inkorrekt: Hier wuerde Meth.a einen Integer und einen String zugewiesen
bekommen. Meth.a verarbeitet aber nur Stringwerte
4. Meth.b("acht\" , 8);
korrekt


Kann mal bitte jemand rüberschauen 🙂
 
1. und 2. sind korrekt.
Aber bei 3. hast du das falsch erkannt. Du siehst ja das Methode b einen int Wert zurückgibt. Also führst du b aus, mit den gegebenen Werten und er gibt dir einen int zurück. Mit diesem wird a. ausgeführt, was völlig korrekt ist.
Genauso ist 4. falsch, denn er erwartet als erstes einen int und als zweites den String, hier ist es vertauscht.
 
1. Richtig, inkorrekt. Aber ich würde eher sagen "a() erwartet nur einen Parameter"
2. Richtig, korrekt.
3. Falsch. Erstens wird a() nur das Resultat aus b() - also ein int - übergeben, was korrekt ist. Die Parameter 23 und "vier" werden b() übergeben, auch korrekt.
4. Falsch. Erstens stimmt die Parameterreihenfolge nicht (int, String und nicht String, int) und zweitens wird das zweite " mit dem \ escaped. Der String ist also noch nicht zu Ende und es gibt einen Compilerfehler.
 
Du kannst keiner Funktion 2 Werte übergeben, die nur 1 erwartet. Kannst ja einfach testen in dem du es mal in Java o. Ä. schreibst ;-)
 
Und wie sieht das ganze mit

Meth.b(Meth.b(0, "sieben"), "sechs");

aus?
Hierbei würden doch 3 Werte für die äußere Methode Meth.b existieren. Es dürfen aber nur 2 existieren, oder ?
 
Java:
Meth.b(Meth.b(0, "sieben"), "sechs");

lösen wir das ganze mal von innen nach außen auf. Das inner Meth.b wird ausgeführt und returned ein int:
Java:
Meth.b([irgendein_int], "sechs");

Wie du siehst stimmt alles, da das äußere dann wiederum int/string übergeben bekommt
 
Java:
Meth.b(18, Meth.a(5));

von innen nach außen:

Java:
Meth.b(18, void); //fehler

denn Meth.a gibt void (nichts) zurück.
 

Zurück
Oben