Argument an Parameter--> Wir haben ein Problem!!
-
Hi Leute,
ich habe ein (großese) Verständnisproblem, glaub ich.?!?!?!Folgender Code (für die Zurücklieferung eines Arguments bzw. eines Parameters)
Blablabla
-
static double rechnen(doubel zahl1)
-
{
-
int ergebnis;
-
ergebnis = zahl1 * zahl1;
-
return ergebnis;
-
}
-
public s...............usw.{
-
int wert = 3;
-
int resultat;
-
resultat = rechnen(wert);
-
System.out.println("3 * 3 = " + ergebnis);
-
}
Jetzt meine Vermutung:
Die Variable in Zeile 8 übergibt die Ziffer 3 an den Aufrufer (rechnen(wert)) in Zeile 10. Dieses Argument wird an den Paratmeter in Zeile 1 abgegeben und dann im Methodenkörper verarbeitet. (Ich hoffe bis hierhin ist noch alles Ok).
Der Anweisungsblock übergibt denn erechneten Wert von 9 mit dem Schlüsselwort aus Zeile 5 an den Aufrufer zurück, ok?!
Jetzt mein Verständnisprob. - Warum steht in Zeile 10 vor dem (=) Zeichen die Variable "resultat". Soll der zurückgelieferte Wert, der an den Aufrufer (rechnen(wert)) geschickt wurde (in Zeile 10) an resultat übergeben und dort gespeichert werden? Dann frage ich mich aber, warum in Zeile 11 "ergebnis", die Bezeichnng aus Zeile 5 steht und nicht "resultat". Oder könnte man sich das mit dem restultat sparen und einfach den Aurufer in Zeile 11 einsetzen??
-
-
Ich denke dein Problem hat damit zu tun, dass dieser Code schlicht und einfach nicht korrekt ist
Zeile 11 müsste so lauten:
11) System.out.println("3 * 3 = " + resultat);Eine Variable die in einer Methode definiert ist, existiert in einer anderen Methode nicht. Wenn zwei Variablen denselben Namen haben... haben sie halt denselben Namen, sind aber dennoch total unabhängig voneinander.
Das "resultat = rechnen(..." ist leider nur halb richtig, "rechnen" gibt einen double zurück, aber "resultat" verlangt einen int. Würde "rechnen" einen int zurückgeben, wäre alles ok.
Und ja, das könnte man alles zusammenkürzen:
public int rechnen( int x ){ return x*x; } public void blabla(){ System.out.println( "3*3 ist = " + rechnen( 3 )); }
-
Soll das jetzt funktionieren?
-
Ja, Du hast recht. Ich habe mich verschrieben. Statt int sollten double-Werte stehen, das war ein Tipfehler meinerseits.
geschrieben von:
JBeni:
Eine Variable die in einer Methode definiert ist, existiert in einer anderen Methode nicht. Wenn zwei Variablen denselben Namen haben... haben sie halt denselben Namen, sind aber dennoch total unabhängig voneinander.heisst das, dass das nur ein Zufall mit den Bezeichnungen in Zeile 5 und 11 war, bzw. "ergebnis" in Zeile 11 falsch ist.?!?!
Können eigentlich auch Objekte an eine Methode zur Verarbeitung übergeben werden??Nur mal so am Rande
-
monet schrieb:
bzw. "ergebnis" in Zeile 11 falsch ist.
ja. Der Code würde so nicht kompiliert (bzw, vielleicht würde er kompilieren wenn es eine Variable "ergebnis" in der Klasse gibt - nur das Ergebnis wäre dann nicht das gewünschte).
Können eigentlich auch Objekte an eine Methode zur Verarbeitung übergeben werden??Nur mal so am Rande
Ja, hat denselben Syntax. Da musst du nur aufpassen: es werden keine Kopien übergeben, wenn du was an einem übergebenen Objekt änderst, kann das (böse oder gewollte) Nebeneffekte haben.
-
Hi, danke erstmal für die Hilfe.
Um nochmal auf die Objekte zu kommen, die ich zuletzt angesprochen habe. D.h ich würde die Objekte bzw. die Variablen, die dort bestimmte Werte haben also änderen, oder??
Jetzt noch etwas anderes:
Ich habe leider noch ein Problem, vielleicht kannst Du mir auch dabei helfen.
Ich arbeite zur Zeit mit Windows ME und mein Eclipse schtürzt dauernd ab. Jetzt bin ich es langsam leid und würde gerne unter MS-DOS arbeiten aber ich bekomme das irgendwie nicht mit dem Pfad usw. hin.
Meine Adresse für jdk1.5.0_05 lautet wie folgtC:\Programme\Java\jdk1.5.0_05\bin
Wie trage ich das nun in meine Autoexe-Datei ein.
-
Unter DOS ??? WIESO?
-
Naja, ich habe mich wohl etwas unglücklich ausgedrückt. Ich meinte natürlich mit dem Texteditor usw. um dann im Ausgabefenster meine Arbeit in Action zu sehe.
Aber ich habe immer noch das oben erwähnte Prob.