# Auf Variable in For-Schleife zugreifen!



## Mudfreak (3. Nov 2006)

Guten Tag

Ich hab ein ganz simples Anfängerproblem bei folgendem Code: 
	
	
	
	





```
public class Sum {
	
static private int sum = 0;

private static void ausgabe () {
	
System.out.println (sum) ;

}

public static void main (String [ ] args ) {
	
for(int i=0 , sum=0; i <10; i++) {
sum += i ;

}
System.out.println(sum) ;

ausgabe () ;
}
}
```

Die Console gibt mir hier 2 mal die 0 aus. 
Nun heisst die Frage aber folgendermassen: 
Ändern Sie das Programm ohne Umbenennung der Variablen so, dass beide
Ausgaben im Programm die in der Schleife berechnete Summe ausgeben.

Wenn ich das print innerhalb der Schleife schreibe dann funktioniert es. Aber wie bekomm ichs hin dass die Variable sum nach aussen hin auch den Wert hin übernimmt?

Vielen Dank
Muddy


----------



## André Uhres (3. Nov 2006)

http://www.java-forum.org/de/viewtopic.php?t=16931


----------



## Mudfreak (3. Nov 2006)

Ich wüsste nicht was ich falsch gemacht habe. Es trifft keines von denen irgendwie zu?!? :shock: 
Gegooglt hab ich schon. Dort find ich nur immer die normalen Schleifen und bei komplexeren Sachen kenn ich mich nicht aus. Hausaufgabe is es auch keine. Also was los? Und nein ich bin nicht das erste mal in einem Forum unterwegs!


----------



## Fatal Error (3. Nov 2006)

du hast oben schon deine sum (integer) variable, warum erzeugst du in der for schleife die selbe variable nochmal. nimm das mal raus und probiers.

also nur:

```
for(int i=0; i <10; i++) {
      sum += i ;

}
```
und nicht:

```
for(int i=0 , sum=0; i <10; i++) {
sum += i ;

}
```


----------



## Mudfreak (3. Nov 2006)

Stimmt.  So nun meine Frage warum?
Wenn ichs so lasse wies jetz ist nur die Variable i ausserhalb deklariere 
	
	
	
	





```
int i;
for(i=0, sum=0; i <10; i++) {
sum += i ;
}
```
dann gehts genauso. Bzw wenn ich wie mein Vorposter oben gesagt das sum=0 in der For Schleife rauslösche gehts auch. Wieso?

Oder besser gefragt. Wieso hat das nicht von Anfang an funktioniert wie im Starterpost gezeigt? Die Variable sum ist global. Also kann man sie ja auch überall aufrufen. Geht auch. Nur aus welchem Grund wird der Wert von der Schleife nicht übernommen?


----------



## SlaterB (4. Nov 2006)

for(int i=0 , sum=0; i <10; i++) {
sum += i ;
} 

da wird eine lokale Variable sum erzeugt, genau so als wenn du

int i;
int sum;
for(i=0, sum=0; i <10; i++) {
sum += i ;
} 

schreiben würdest,

diese lokale Variable überdekt die globale


----------



## André Uhres (5. Nov 2006)

Mudfreak hat gesagt.:
			
		

> ..Hausaufgabe is es auch keine. Also was los?..


Das ist 100% eine Aufgabe:


			
				Mudfreak hat gesagt.:
			
		

> ..
> Nun heisst die Frage aber folgendermassen:
> Ändern Sie das Programm ohne Umbenennung der Variablen so, dass beide
> Ausgaben im Programm die in der Schleife berechnete Summe ausgeben...


Und da man diese Art Aufgaben meistens zu Hause löst,  sind es eben Hausaufgaben  :meld:
Hält man sich eigentlich noch an die Boardregeln?


----------



## SlaterB (5. Nov 2006)

Hausaufgaben sind 10 Zeilen Quellcode zu schreiben,
den Umstand, dass eine lokale Variable eine globale überdeckt kriegt man auf diese Weise nie raus,
das kann man ruhig verraten


----------

