Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Hallo zusammen,
sitze gerade an einem Problem, an dem ich gerade nicht weiter komme aber dessen Lösung bestimmt ziemlich einfach ist.
Und zwar möchte ich in meiner Main Methode zwei andere Methoden aufrufen, die mir jeweils Werte zurück geben sollen, mit denen ich dann in meiner Main Methode weiter arbeite. Nur bekomm ich ständig 0 als Wert zurück geliefert. In den zwei anderen Methoden habe ich aber bis zum Return Befehl noch andere Werte.
Viele Grüße und Danke
Hier ist mein abgespeckter Code:
Java:
public class Test{
public static void main(String[] args) throws InterruptedException, IOException {
double a=0;
double b=0;
getA();
getB();
double c=a+b; //=0
}
public static double getA() throws FileNotFoundException, IOException, InterruptedException{
double a=5;
//Rechne au aus
return a; //Hier hat a noch einen Wert
}
public static double getB() throws FileNotFoundException, IOException, InterruptedException{
double b=5;
//Rechne b aus
return b; //Hier hat b noch einen Wert
}
}
An der Stelle "double c = a+b" rechnet er 0+0 weil du oben ja a&b den Wert 0 zuweist. Die Variablen a&b sind unabhängig von a&b in den Methoden.
Du müsstest rechnen: "double c= getA() + getB()" wenn ich mich nicht täusche..
An der Stelle "double c = a+b" rechnet er 0+0 weil du oben ja a&b den Wert 0 zuweist. Die Variablen a&b sind unabhängig von a&b in den Methoden.
Du müsstest rechnen: "double c= getA() + getB()" wenn ich mich nicht täusche..
Das Problem ist, das du a und b den Methodenaufruf zuweisen müsstest, umgangssprachlich gesprochen.
Du kannst den Wert von a und b nicht in einer Methode ändern, das geht in C/C++ (bspw.) mit pass-by-name (bspw.), aber in Java nich.
EDIT: Und die Methode liefert schon eine Wert zurück, der Aufrufer weiterverarbeitet sie aber nicht. (Wird gestackt und alles weitere)
Each Java Virtual Machine thread has a private Java Virtual Machine stack, created at the same time as the thread. A Java Virtual Machine stack stores frames (§2.6). A Java Virtual Machine stack is analogous to the stack of a conventional language such as C: it holds local variables and partial results, and plays a part in method invocation and return.
entweder das ... oder um beim usprünglichen Ansatz zu bleiben:
Java:
public class Test
{
public static void main(String[] args) throws InterruptedException, IOException
{
double a = getA();
double b = getB();
double c = a + b;
}
// .....
}
Zu den Exception:
das throws in "main" ist völlig überflüssig, weil die Stelle, die Dein Programm startet, sie NIE empfangen wird!
Und die drei bei getA und getB scheinen auch flüssiger als flüssig (= überflüssig ) zu sein ... oder soll da bspw. beim Berechnen wirklich eine Datei geöffnet werden ??
Die Exceptions haben in dem vereinfachten Beispiel eigentlich nichts zu suchen, aber in meinem eigentlichen Programm brauche ich die. Habe einfach die Köpfe von meinem eigentlichen Programm übernommen und den Code innerhalb der Methoden für das Beispiel rausgeschmissen