Return Anweisung übergibt Variablen nicht

Radoan

Neues Mitglied
Hallo ich habe ein kleines Programm geschrieben, welches Zahlen sortieren soll. Die Sortierung klappt auch einwandfrei, nur das übergeben aus der Methode in die Main funktioniert nicht.
Java:
public class Aufgabe2 {
static int a=3;
static int b=1;
static int c=2;

        public static int berechnung(int a,int b, int c){

            int t;
            if (a > b) {
                t = b;
                b = a;
                a = t;
            }
            if (a > c) {
                t = c;
                c = a;
                a = t;
            }
            if (b > c) {
                t = c;
                c = b;
                b = t;
            }
            return a+b+c; // a=1, b=2, c=3
	}

        public static void main(String[] args) {


            System.out.println("a = " + a);//a=3
            System.out.println("b = " + b);//b=1
            System.out.println("c = " + c);//c=2

            berechnung(a,b,c);//a=3, b=1,c=2

            System.out.println("a = " + a);//a=3
            System.out.println("b = " + b);//b=1
            System.out.println("c = " + c);//c=2
      }
}
Danke für eure Hilfe
Radoan
 
Grundsätzlich: Du kannst immer nur einen Rückgabewert aus einer Methode zurückgeben. Wenn Du also 3 ints zurückgeben willst, musst Du diese bspw alle in ein int-Array stecken und dieses dann zurückgeben.

2. Du musst in der main-Methode eine Variable haben, welcher der Methodenaufruf zugewiesen wird, damit eben der Rückgabewert in der Variablen gespeichert werden kann - dies könnte so aussehen:
Code:
int[] werte = new int[3];
werte = berechnung(a,b,c);

Grüße,
muemmel_0811
 
Zuletzt bearbeitet:
Die Methode berechnet die Summe a+b+c und gibt das Ergebnis zurück (die if-Anweisungen davor haben keine Wirkung).
Beim Aufruf in der Main-Methode ignorierst du dieses Ergebnis allerdings. Die Änderungen der (lokalen) Variablen in berechne() sind nach Beendigung der Methode nicht mehr sichtbar. Die gibt es einfach nicht mehr.
 
Java:
....
public static void berechnung(){
....
berechnung();
....

und den return weglassen (Zeile 24).

Du hast a, b und c global als Klassenvariablen deklariert. Nachdem du aber die Methode nochmal parametrisiert, werden die Variablen nur in diesem Namespace geändert (Methodennamespace). Lässt du die Parametrisierung einfach weg, werden die Variablen vom nächst höheren (kann man glaub so sagen 😛) Namespace (Klassennamespace) genommen und auch da geändert.
 

Zurück
Oben