Hallo,
ich will eine Java Programm schreiben, was folgendes macht:
Nach Eingabe von n folgende Summen berechnet:
1²+2²+3²+4²+n²
(die kleine Zahl bedeutet *hoch 2*)
so sieht es bei mir im Moment aus:
System.out.print("Bitte geben sie ihre gewuenschte Zahl ein:");
int n=ReadInt();
int erg=0;
int i=1;
while(i {
erg=i*i;
i++;
}
System.out.println("Das Ergebnis ist "+erg +"!");
es wir allerdings nur die Zahl "n" zum Quadrat genommen und dann ausgegeben.
Was muss ich hinzufuegen, damit alle Zahlen zum Quadrat genommen werden und dann addiert werden??
Vielen Dank Dennis W.
Programmieren - alles kontrollieren 4.941 Themen, 20.715 Beiträge
Wunder was!
Du willst doch eine Summe berechnen, oder? Dann solltest du deine Summanden auch addieren, gelle ;-)
schreib anstatt
erg = i*i;
besser
erg += i*i;
cu
Dreamforger
Wenn Du das Programm analysierst wirst Du sehen, dass tatsächlich alle Zahlen von 1 bis n quadriert werden.
Du kriegst davon nur nix mit, weil Du nur das letzte Ergebnis ausgibst.
im 1. Lauf ist erg=1*1; 1*1=1
im 2. Lauf ist erg=2*2; 2*2=4
im 3. Lauf ist erg=3*3; 3*3=9
Wenn Du jetzt erg ausgibst wird die Zahl 9 ausgegeben.
Wenn Du also möchtest, dass alle vorher berechneten Zahlen zum Ergebnis addiert werden so solltest Du auch eine Addition einfügen.
Das Additionszeichen ist + und sollte auch in Deinem Programm erscheinen.
i++ heißt übrigens nicht sowas wie addiere alle Zahlen zum Ergebnis oder so ähnlich sondern i++ heißt erhöhe i um eins.
Ich hätte hier auch eine Lösung schreiben können, aber ich denke meine Hinweise sollten reichen.
Wenn nicht kannst ja noch mal nachfragen.
Gruß Wolf
Vielen Dank, ich hab das Problem geloest!
Ach ja und wenn du das ganze schneller gelöst haben willst, gubt's noch Mathematische Formelsammlungen. z.B aus Springer's Mathe (S.189):
Summe (von k=1 bis n) über k^2 = n(n+1)(2n+1) / 6
Damit hast hast du anstatt von O(n) nurnoch O(1) und besser geht's nicht, aber ich gehe nicht davon aus das dir das was sagt