# Methode: Summe von n Zahlen



## kaaa (16. Mai 2017)

Hi,
ich bin ein ziemlicher Neuling was Programmieren an geht und versteh folgende Aufgabe nicht ganz:

Schreibe eine Methode, die zu jeder natürlichen Zahl n die Summe der ersten n Zahlen berechnet.
Also für n=5 Ergebnis:1+2+3+4+5=15

Kann mir jemand das erklären?
Danke!


----------



## tommysenf (16. Mai 2017)

```
public int summe(int n) {
     
      int ergebnis = 0;    
     
       // Hier berechnest du jetzt das richtige ergebnis
     
      return ergebnis;
}
```


----------



## kaaa (16. Mai 2017)

tommysenf hat gesagt.:


> ```
> public int summe(int n) {
> 
> int ergebnis = 0;
> ...


Danke!
Muss ich nicht so etwas wie 
for (int i=1; i<=n; i++) rechnen?
Ich versteh nicht wirklich, wie ich die Zahlen dann addieren kann...


----------



## Robat (16. Mai 2017)

Was genau verstehst du denn nicht?

Wenn du nicht weißt wie du es programmieren sollst würde ich dir empfehlen erstmal Stift und Papier zur Hand zu nehmen und dir zu überlegen wie du es per Hand machen würdest.
Du würdest, von 1 beginnend, alle Zahlen bis n durchgehen und aufsummieren. Du würdest also sagen 1 + 2 = 3. 3 + 3 = 6. 6 + 5 = 10. 10 + 5 = 15. Jetzt musst du dir einen Weg überlegen,
wie du n Zahlen in Java durchlaufen kannst und die Zahl n immer auf eine int Variable drauf addierst.

Alternativ könntest du natürlich auch einfach mit der Formel: `n * (n+1) / 2` arbeiten wobei n die höchste Zahl in deiner Zahlenfolge ist  Das ist aber sicherlich nicht der geforderte Weg 

Gruß Robert


----------



## Robat (16. Mai 2017)

kaaa hat gesagt.:


> for (int i=1; i<=n; i++) rechnen?


Das sieht schon mal gut aus.

Um immer zu addieren musst du dir vor der Schleife eine Variable anlegen und in der Schleife sagen das `summe = summe + i;`


----------



## kaaa (16. Mai 2017)

Also könnte ich als Variable
static int calcsum(int n)
vor die Schleife schreiben oder geht das auch einfacher/anders? 

Vielen Dank für die Hilfe!


----------



## Robat (16. Mai 2017)

Nun ja du sollst ja eine Methode implementieren, d.h. du kannst local in der Methode eine Variable deklarieren 


```
public int summe(int n)
{
    int summe = 0;
  
    // Schleifenpart

    return summe;
}
```

Die locale Variable kannst du in der Schleife dann immer aufsummieren und dann am Ende zurückgeben


----------



## kaaa (16. Mai 2017)

Robat hat gesagt.:


> Nun ja du sollst ja eine Methode implementieren, d.h. du kannst local in der Methode eine Variable deklarieren
> 
> 
> ```
> ...



Nochmal vielen Dank! Wäre das so dann richtig?

```
public int summe (int n)
  {
     int summe = 0;
         for (int i=1; i<=n; i++)
               summe = summe + i;
     return summe;
  }
```


----------



## Robat (16. Mai 2017)

kaaa hat gesagt.:


> Wäre das so dann richtig?


Ausprobieren! Das macht die Informatik so schön 

Aber ja es sieht gut aus. Wenn du es jetzt noch richtig formatierst und um die for noch die Klammern setzt ist es richtig:


```
public static int summe(int n)
{
    int summe = 0;
    for (int i = 1; i <= n; i++)
    {
        summe = summe + i;
    }
    return summe;
}
```


----------



## kaaa (16. Mai 2017)

Vielen Dank!!! @Robat


----------



## Xyz1 (16. Mai 2017)

Das kann doch nicht dein/euer Ernst sein!
Vor 100 Jahren bereits hat man diese Aufgabe Grundschülern gestellt.
Ich mein, die Formulierung ist vielleicht etwas schwer....... ABER ANSONSTEN: EIGENINITIATIVE!


----------



## tommysenf (16. Mai 2017)

Robat hat gesagt.:


> richtig formatierst





```
public static int summe(int n) {

    int summe = 0;
    for (int i = 1; i <= n; i++) {
        summe = summe + i;
    }
    return summe;
}
```

SCNR


----------



## Robat (16. Mai 2017)

DerWissende hat gesagt.:


> Das kann doch nicht dein/euer Ernst sein!


Was genau ist jetzt dein Problem? 
Wenn du kein Bock hast bei simplen Problem zu helfen dann lass es und halt dich daraus.
Solche Kommentare braucht kein Mensch.

@tommysenf das "richtig" hätte ich vielleicht weglassen sollen


----------



## kaaa (16. Mai 2017)

Bin eben auf Grundschulniveau... :/
Habe es übrigens ausprobiert @Robat  es erscheint ein Syntaxfehler in der ersten Zeile, woran könnte das liegen?


----------



## Robat (16. Mai 2017)

Wie sieht denn dein Code aus? 
Das Code-Snippet enthält keine syntaktischen Fehler. 
Zeig doch mal wo/wie du den Code eingefügt hast


----------



## Xyz1 (16. Mai 2017)

kaaa hat gesagt.:


> Bin eben auf Grundschulniveau


Mit Verlaub, Grundschüler können aber noch nicht so gut schreiben. Von daher entspricht das der Unwahrheit.


----------



## kaaa (16. Mai 2017)

Das hier ist mein Code...


----------



## Xyz1 (16. Mai 2017)

Flugzeug und WLAN 
Ist das die Vorgabe in einer App?


----------



## Robat (16. Mai 2017)

Ich weiß zwar nicht was du da für eine App (oder IDE) benutzt aber ich bin mir ziemlich sicher dass du auch da eine Klasse anlegen musst 

also sowas in der Art:


```
public class Test
{
    public static void main(String[] args)
    {
        System.out.println(summe(5));
    }

    public static int summe(int n)
    {

        int summe = 0;
        for (int i = 1; i <= n; i++)
        {
            summe = summe + i;
        }
        return summe;
    }

}
```

Wenn dir nicht bewusst ist warum man das so machen muss solltest du dir noch mal ein Grundlagenhandbuch zur Hand nehmen und die ersten Seiten durchgehen.


----------



## Xyz1 (16. Mai 2017)

Robat hat gesagt.:


> zur Hand nehmen und die ersten Seiten durchgehen.


Oder @Robat fragen, der kaut's dir vor.


----------



## kaaa (16. Mai 2017)

DerWissende hat gesagt.:


> Flugzeug und WLAN
> Ist das die Vorgabe in einer App?


hat Style ich weiß


----------



## kaaa (16. Mai 2017)

Robat hat gesagt.:


> Ich weiß zwar nicht was du da für eine App (oder IDE) benutzt aber ich bin mir ziemlich sicher dass du auch da eine Klasse anlegen musst
> 
> also sowas in der Art:
> 
> ...



Danke Das wüsste ich theoretisch sogar... Ha jetzt haltet ihr mich wahrscheinlich echt alle für einen Grundschüler. Info liegt mir einfach 0

Aber danke für all die Hilfe!


----------



## stg (16. Mai 2017)

Alternativ könnte man's auch so machen:


```
public class Test {

    public static void main(String[] args) {
        for (int i = 1; i <= 10; i++) {
            System.out.println(i+": "+summe(i));
        }
    }

    public static int summe(int n) {
        int i = n, j = 0;
        for (int l = 0; i > 0; i = i >> 1) {
            j += ((i & 1) == 1 ? n << l++ : 1 + l - ++l);
        }
        while (n != 0) {
            i = (j & n);
            j = j ^ n;
            n = i << 1;
        }
        return j >> 1;
    }
}
```


----------



## KonradN (7. Mrz 2022)

a) Der Thread ist fast 5 Jahre alt.
b) Nein, das ist keine korrekte Lösung zu der Aufgabe des TE, die man im ersten Post finden kann. Was schon eine gute Leistung ist, da die Lösung bereits im Thread enthalten ist ....


----------



## Apple’s Jünger (8. Mrz 2022)

Muss man sich fragen, wieviel langeweile man haben muss, um einen 5 Jahre alten Thread zu öffnen….


----------

