# Parameter_rückgabewert



## Lange (21. Nov 2010)

Sie haben eingegeben: 1
Spielzug Spieler: 2 posi  2 anzahl
Spiel: nach Zug Spieler: 0 position  2 spielgewinn1

Warum ist die "position" nach dem Zug des Spielers immer noch auf 0, statt auf 2? Ich würde erwarten, dass nach Aufruf von spielzugSpieler(position) posi=2, das in spielzugSpieler gesetzt wird, zurück gegeben wird. Warum funktioniert das nicht:


```
public class Parameter_uebergabe {
  public static void main(String[] args) {


    int beginner = 1;
    System.out.println("Sie haben eingegeben: " + beginner);
 
     
    spiel(beginner);
  
   }


    public static int spiel(int beginn)  {
      int spielgewinn1 = 0;
      int position = 0;     

       spielgewinn1 = (spielzugSpieler(position)); 
      System.out.println("Spiel: nach Zug Spieler: " + position + " position  " +  spielgewinn1 + " spielgewinn1" );
   
      
       
      return spielgewinn1;
   }

    public static int spielzugSpieler(int posi)  {
 
      int anzahl = 2;

      posi = posi + anzahl;
      System.out.println("Spielzug Spieler: " + posi + " posi  " + anzahl + " anzahl");
      return anzahl;
    }
}
```


----------



## Marcinek (21. Nov 2010)

Google: Call by Reference und Call by Value

Java ist call by Value


----------



## WIaimy (21. Nov 2010)

posi ist eine Lokale Variable deiner untersten Methode. Du gibst ihr zwar einen Wert (hier 0) und erhöhst ihn, lässt es aber nicht zurück geben. Deshalb verfällt das ganze nachdem die Methode abgearbeitet wurde. Denn deine Variable posi verändert nichts an der Variable position!
Die beiden haben gar nichts mit einander zu tun, außer das beim Aufruf posi = position ist.


----------



## Lange (21. Nov 2010)

Danke für die Hilfe.

Ich habe die int varable in ein int[] abgeändert. Das wars!


----------



## Marcinek (21. Nov 2010)

Lange hat gesagt.:


> Danke für die Hilfe.
> 
> Ich habe die int varable in ein int[] abgeändert. Das wars!



Sehr dirty.

i.d.R würde man die geänderte Zahl als Ergebnis erwarten, oder sie globaler definieren


----------

