Wie kann man in Java mit der For-Schleife alle Zahlen von 1 bis Zur eingegebenen Zahl miteinander addieren?
4 Antworten
Diese Aufgabe entspricht im Wesentlichen dem hier:
https://programmieraufgaben.ch/aufgabe/zahlensumme-1/3uy94fbo
Dort sind schon 4 Lösungen offengelegt.
Dabei gibt es generell drei Lösungsansätze
Die Iterative Methode ist in anderen Lösungen hier auf Gutefrage bereits genannt worden (mit for- bzw. while-Schleife). Die Frage war ja explizit nach einer FOR-Schleife. Daneben gibt es aber meist noch zwei andere Wege, die ich hier aufzeigen will:
1. Die Methode mit einer Formel:
summe := höchsteZahl * (höchsteZahl + 1) / 2
Diese Methode hat gegenüber der for-Schleife den Vorteil, dass sie immens schneller ist. Also: In der Praxis sowas nie mit for-Schleife lösen. Zum Lernen der For-Schleife ist das ja ok.
2. Die Methode vermittelst Rekursion ist zwar nicht die schnellste, aber meist die am schnellsten entwickelte:
summe(höchsteZahl) := 1, genau dann, wenn höchsteZahl schon 1 ist
oder aber
summe(höchsteZahl) := höchsteZahl + summe(höchsteZahl - 1).
int result = 0; for (int i = 1; i <= eingabe; i++) { result += i; } System.out.println(result);
Das result += i; ist zu lesen wie result = result + i;
Da ein Programm erst das was rechts vom = steht auswertet bedeutet das nimm den aktuellen werd von result, addiere den Wert von i drauf und überschreibe result mit dem neuen Wert aus result+i. Dann hat result den um i erhöhten Wert, die for schleife erhöht i um 1 und dann geht das spiel von vorne los.
Grüße foxx
ob du den wert der eingabe noch mit dazu haben willst oder nicht entscheidet dadrüber ob du <= oder < verwenden musst.
so ungefähr:
private static int test(int bisZahl)
{
int zwischenergebnis = 0;
for (int i = 1; i <= bisZahl; i++)
{
zwischenergebnis += i;
}
return zwischenergebnis;
}
Das kannst du dann z.B. mit test(20) aufrufen, und es kommt 210 raus.
Weißt Du denn grundsätzlich, wie man eine for-Schleife benutzt und wie man in Java addiert?
Naja...inzwischen haben Dir ja Andere die Komplettlösung geliefert...
Ja das Standard wissen halt :)