# Variablen bei der If-abfrage



## qwertzstupid (27. Dez 2009)

hi dies ist mein problem.

public int test (int a, int b)
{ if (a < 3) { b = functionXY (a);}
if (a != 0) {test (a, b)
}

ich weiß diese methode ist sinnlos, soll nur ein beispiel sein.


Wie erreiche ich es, das der geänderte B- Wert aus der ersten if-schleife für die ganze methode gilt,

also das dann die zweite if schleife mit dem wert funcionXY(a) berechnet wird.


----------



## jason (27. Dez 2009)

Da stimmt doch alles, oder täusche ich mich?

Übrigens solltest du [XML]
	
	
	
	





```

```
[/XML] um deinen Code machen und darauf achten, dass alles schön eingerückt ist.

Edit: Oder meinst du, dass IMMER mit 
	
	
	
	





```
functionXY(a)
```
 gerechnet werden soll, auch wenn 
	
	
	
	





```
a>=3
```
 ist?
Dann musst du die erste if-Abfrage einfach entfernen.

MfG jason


----------



## qwertzstupid (27. Dez 2009)

danke für deine beantwortung. deine tipps werde ich mir merken.


Ich will einfach, dass die Funktion im zweiten Teil, auch mit einem geänderten wert aus der 1. if-Abfrage rechnen kann.
Bei mir ist es nähmlich so, dass test, mit dem vordefinierten b rechnet, auch wenn a<3 ist.


```
public int test (int a, int b)
{ 
      if (a < 3) 
{ b = functionXY (a);}
      if (a != 0) {test (a, b)
}
```


----------



## qwertzstupid (27. Dez 2009)

so jetzt richtig !:


```
public int test (int a, int b)
{
if (a < 3) 
           { b = functionXY (a);}
if (a != 0)
           {test (a, b);}
return b;
}
[/java ]
```


----------



## qwertzstupid (27. Dez 2009)

[Java]
public int test (int a, int b)
{
if (a < 3)
       { b = functionXY (a);}
if (a != 0)
       {test (a, b);}
return b;
}
[/Java ]


----------



## Spin (27. Dez 2009)

Anmerkung: If <- Bedingungen, keine Schleifen. 

Andernfalls kannst du auch eine lokale Variable anlegen.


```
public int methode(int a )
{
int b = a;
}
```

gruß


----------



## eRaaaa (27. Dez 2009)

qwertzstupid hat gesagt.:


> Bei mir ist es nähmlich so, dass test, mit dem vordefinierten b rechnet, auch wenn a<3 ist.



kann eig. nicht sein  (hast du vllt zufällig Werte benutzt, in denen dir functionXY(a) das gleiche b liefert?)


----------



## qwertzstupid (27. Dez 2009)

^^ sry ist ne macke von mir das ich if immer als schleife bezeichne.

trotzdem bringt mich das nicht bei emeinm problem weiter, dass die 2. if-Abfrage mit dem umgeänderten b-wert aus der  1. if-abfrage rechnen soll.


----------



## ThreadPool (27. Dez 2009)

qwertzstupid hat gesagt.:


> [...]die 2. if-Abfrage mit dem umgeänderten b-wert aus der  1. if-abfrage rechnen soll.



Das macht der Code doch, ist dein Algorithmus vielleicht kaputt und du interpretierst da was falsch?


----------



## Spin (27. Dez 2009)

Doch , wetten 

Poste mal deinen ganzen Code und wir zeigen dir dass es auch so geht.
Nutze doch einfach ne lokale Variable , speicher den übergebenen wert zwischen und gib den auch zurück.

Wenn du natürlich den übergebenen wert zurück gibst und nicht den modifizierten, ist es kein Wunder dass nichts anderes passiert .^^


----------



## qwertzstupid (27. Dez 2009)

so das ist der komplette programmcode der methode die ihc proggen will und nicht mehr ein beispiel...


----------



## Spin (27. Dez 2009)

???:L

Ok. Kannst du den Code erklären?

Man kann erkennen das v zurückgegeben wird, aber modifiziert. Dass hasst du in deiner alten Methode nicht gemacht.

Weiterhin kann dass ja nicht dein ganzer Code sein, da die Instanziierung eines mehrdimensionalen Arrays fehlt, weiterhin die Klasse Complex und deren Membervariablen.

Aber ich denke dir gehts darum eine Methode zu haben die überprüft und dann das ergebnis nach der überprüfung zurückgibt.:


```
public static int methode (int a, int b){
       b=b+2;
       a=a+1;
       if(a<b){

       return a+b;
       }
       if(b<a){
           return a-b;
       }
       if(a==b){
           return a*b;
       }
       return 0;
   }
```


```
System.out.println(Klassenname.methode(1, 2)); // Ergebnis : 6
```

Nun nicht modifiziert:



```
public static int methode (int a, int b){
       if(a<b){

       return a+b;
       }
       if(b<a){
           return a-b;
       }
       if(a==b){
           return a*b;
       }
       return 0;
   }
```


```
System.out.println(Klassenname.methode(1, 2)); // Ergebnis : 3
```


grüße


----------

