# Summe von Zahlen - Hilfe!



## julia_qwery (31. Okt 2014)

Hallo Freunde,

ich bräuchte mal Eure hilfe da ich als Java Einsteigerin nicht weiter komme.


```
package Uebung;

public class Uebung_neu {

	public static void main(String[] args) {
		// TODO Auto-generated method stub

		for ( int i=0; i<11; i++)  {
			
			int summe=0;
			int x = summe + i;
			
			System.out.println(x);
			
		}	
	}
}
```

Und zwar müssen hier die Zahlen zwischen 1 - 10 addiert und zum Schluss ausgegeben werden, also 55.

Viele dank im vorraus!!


----------



## nvidia (31. Okt 2014)

```
public class Summe{
        public static void main(String ... args){
            System.out.println(IntStream.range(1,11).sum());
        }    
    }
```


----------



## julia_qwery (31. Okt 2014)

Dankeschön, gibt es aber auch eine andere Lösung mithile der for schleife bzw. mit meinem Ansatz?


----------



## JavaMeister (31. Okt 2014)

```
public class Summe{
        public static void main(String ... args){
            int n = 10;
            System.out.println((n*n +n) / 2);
        }    
    }
```


----------



## Zel2491 (31. Okt 2014)

julia_qwery hat gesagt.:


> ```
> package Uebung;
> 
> public class Uebung_neu {
> ...



Du speicherst die Werte immer nur IN der Schleife, du brauchst eine Variable außerhalb der Schleife, z.B. 
	
	
	
	





```
int summe = 0;
for(int i=0; i<11; i++) {
// Hier auf summe aufaddieren
}
```
 zu Beginn. In jedem Schleifendurchlauf addierst du dein i. Und nach der Schleife gibst du deine Variable summe wieder aus.

Im Moment führst du die Berechnungen immer nur innerhalb der Schleife aus (vor allem initialisierst du immer innerhalb der Schleife neu).

--> Außerhalb der Schleife initialisieren, in der Schleife addieren, nach der Schleife ausgeben.


----------



## Thallius (31. Okt 2014)

Ich könnte mich echt auf dem Boden wälzen vor Lachen. Da fragt ein weibliches forenmitglied nach einer ganz eindeutigen Anfänger Frage und statt das die cracks hier in dem Sinne helfen ,dass man ihr erklärt was falsch ist, werden hier möglichst komplexe lösungen angeboten. Das ist echt wie ein schwanzvegleich pubertierender Teenager.

Danke an Zel das er sich die Mühe gemacht hat es vernünftig zu erklären.

Gruß

Claus


----------



## JavaMeister (31. Okt 2014)

Liegt halt da dran, dd man eine Frage stellt, die hundert Fach beantwortet wurde. 

Habe auch schon mal bessere Antworten von Moderatoren gelesen, die die schlechte Situation besser zusammen fassen


----------



## Gucky (31. Okt 2014)

Ob das mit dem Schwanzvergleich wirklich so war, kann ich nicht beurteilen aber dass, sobald jemand sich nicht mehr als "Einsteiger" betitelt, sondern als "Einsteiger" + "in" alle aus der Ecke geschossen kommen und fertige Lösungen posten und sogar du, JavaMeister, der du immer ein glühender Verfechter von Google ist dein Freund gewesen bist oder immer noch bist, postest eine fertige Antwort. 


Zu Zels Antwort habe ich noch hinzuzufügen: Du hast in der Schleife eine Variable summe und eine Variable x und die Laufvariable. Du addierst i auf Summe, speicherst das Ergebnis in x und gibst x aus. Summe hat gar keine Chance größer zu werden oder ihren Wert mit in den nächsten Durchlauf zu nehmen, weil das Ergebnis von summe + 1 wieder in summe gespeichert werden müsste.
ABER WOHLGEMERKT, GILT DAS HIER ZUSÄTZLICH ZU DEM POST VON ZEL.


----------



## julia_qwery (1. Nov 2014)

Sorry, habs leider immernoch nicht.

Laut den Satz von zel:
--> Außerhalb der Schleife initialisieren, in der Schleife addieren, nach der Schleife ausgeben.
Müsste es so aussehen:



```
public class Uebung2_neu {

	public static void main(String[] args) {
	
		
		int summe = 0 ;
		int x;
		
		for ( int i=0; i<11; i++)  {
			
			
		x=summe + i;
				
		}
	
		System.out.println(x);
	}
}
```

Auch wenn ich das System.out.println(x) in der Schleife lasse, zählt er mir nur die Zahlen von 1 - 10 auf.


----------



## Zel2491 (1. Nov 2014)

Ja, jetzt hast du meine Antwort und die von Gucky etwas vermischt ;-)

Wir spielen deinen Code mal durch:

summe ist zu Beginn 0, x hat keinen Wert.

Schleifendurchlauf Nummer 1:


```
x = summe + i;
```
ergibt: x = 0 + 1 = 1

Schleifendurchlauf Nummer 2:

x = 0 + 2 = 2

usw.

Nimm x erst einmal komplett raus und benutze nur die Variable summe. Die Idee dabei ist allerdings, dass der Wert von summe nach dem 1., 2. und 3. (bis hin zum 10.) Schleifendurchlauf weiter benutzt wird. Summe muss nach dem 1. Schleifendurchlauf den Wert 1 besitzen und nach dem 2. den Wert 3 --> 1 (aus dem 1. Durchlauf) + 2 = 3.

Das wichtige ist halt, dass du immer mit dem aktuellen Wert weiter rechnest.


----------



## Joose (1. Nov 2014)

[Ot] Hab das Thema mal in den richtigen  Bereich geschoben  [/ot]


----------



## julia_qwery (1. Nov 2014)

Vielen Dank für die Antwort. Ihr seid wirklich super hier!!!!

Hab es jetzt lösen können, verstehe aber nicht wirklich was gemacht wird.


```
public class Uebung2_neu {

	public static void main(String[] args) {
		// TODO Auto-generated method stub

		int summe = 0;
		int x;

		for (int i = 0; i < 11; i++) {

			summe += i;

		}

		System.out.println(summe);
	}
}
```

Durch rumprobieren habe ich jetzt summe+=i . Das funktioniert auch gut, doch was passiert jetzt dort. Was wird dort denn addiert? Normalerweise addiert man ja zwei Variablen.


----------



## Saheeda (1. Nov 2014)

"summe += i" ist einfach eine Kurzschreibweise von "summe = summe + i".

Dasselbe kannst du auch mit den anderen Grundrechenarten machen:
"summe -= i" -->"summe = summe - i"
"summe *= i" -->"summe = summe * i"
"summe /= i" -->"summe = summe / i"


----------



## Zel2491 (1. Nov 2014)

julia_qwery hat gesagt.:


> Durch rumprobieren habe ich jetzt summe+=i . Das funktioniert auch gut, doch was passiert jetzt dort. Was wird dort denn addiert? Normalerweise addiert man ja zwei Variablen.






```
for (int i = 0; i < 11; i++) {
 
summe += i;
 
}
```

Spielen wir das mal durch.

*1. Schleifendurchlauf:*

summe = 0
i = 0

summe += i --> summe = 0 + 0

*2. Schleifendurchlauf:*

summe = 0
i = 1

summe += i --> summe = 0 + 1 = 1
*
3. Schleifendurchlauf:*

summe = 1
i = 2

summe += i --> summe = 1 + 2 = 3
*
4. Schleifendurchlauf:*

summe = 3
i = 3

summe += i --> summe = 3 + 3 = 6

*5. Schleifendurchlauf:*

summe = 6
i = 4

summe += i --> summe = 6 + 4 = 10

*6. Schleifendurchlauf:*

summe = 10
i = 5

summe += i --> summe = 10 + 5 = 15

*7. Schleifendurchlauf:*

summe = 15
i = 6

summe += i --> summe = 15 + 6 = 21
*
8. Schleifendurchlauf:*

summe = 21
i = 7

summe += i --> summe = 21 + 7 = 28
*
9. Schleifendurchlauf:*

summe = 28
i = 8

summe += i --> summe = 28 + 8 = 36

*10. Schleifendurchlauf:*

summe = 36
i = 9

summe += i --> summe = 36 + 9 = 45

*11. Schleifendurchlauf:*

summe = 45
i = 10

summe += i --> summe = 45 + 10 = 55

*12. Schleifendurchlauf:*

summe = 55
i = 11 --> Abbruch, da Schleifenbedingung sagt i < 11

Sprung aus der Schleife raus --> bleibt noch das 
	
	
	
	





```
System.out.println(summe);
```
 und wie gerade gezeigt... Tadaaaa: summe = 55!

Hoffe das hat weiter geholfen ;-)


----------



## julia_qwery (1. Nov 2014)

omg, vielen vielen Dank für die Hilfe!!!
Einfach und verständlich erklärt, top!!!

Dankeschön ihr seid die besten !


----------

