Java Summenberechnung der Quadratzahlen von 0 bis 1000

mo_ritzl

Lt. Commander
Registriert
Dez. 2010
Beiträge
1.515
Hallo zusammen,
ich habe folgendes Problem bei der Umsetzung eines mini Programmes:
Und zwar habe ich schon ein Programm für die Berechnung der Natürlichen Zahlen:

public class SUMMENBERECHNUNG
{
int i;
int summe =0;

public void Berechenen()
{
for(i=0; i<=1000; i++)
{
summe += i;
}
System.out.print("Die Summe der Zahlen 0 bis 1000 ist:");
System.out.print(summe);
}
}

Aber das ganze mit Quadratzahlen (also mit 2,4,9.16 usw...) haut nicht hin.
Weiß jemand eine einfache Lösung

MFG
Moritz
 
Bei der Ausgabe gehört:
System.out.println("Die Summe der Zahlen 0 bis 1000 ist:"+summe);
So hab ich das zumindest gelernt
Und die Klassen heißen bei mir "public void ...()"
Womit programmierst du?

Edit: Habe überlesen dass das funktioniert und du ein Problem mit den Quadratzahlen hast
 
Zuletzt bearbeitet:
mach aus summe += i; einfach summe = summe + i*i;
Wenn ein (mehr oder weniger) zusammengesetzter Term rechts steht ist += irgendwie hässlich deswegen diese Formulierung.

@Paller
Das ändert nur die Formatierung und ist Geschmackssache...
Außerdem wird das (warum auch immer) ein Summen-objekt also ist das schon ok.
 
Zuletzt bearbeitet:
Code:
public class SUMMENBERECHNUNG
{
int summe;

public void Quadratsumme()
{
 summe = 0;
 for(int i = 1; i < 1001; i++)
 {
      summe += i * i;
 }
 System.out.print("Die Summe der Zahlen 0 bis 1000 ist:");
 System.out.print(summe);
 }
}
Eventuell wird dabei aber die maximale Größe für int überschritten, deswegen sollte man "summe" eventuell zu einem "long" machen und hoffen, dass das reicht.
 
Er will aber keine Quadratzahlen bis 1000*1000 sondern nur bis 1000.
 
@AP Nova Das wollte ich auch schreiben war aber zu faul dazu ^^
@SaGGan Dann braucht er nur bei der for-Schleife das "i < 1001" durch "summe<=1000" zu ändern
 
PaLLeR schrieb:
@AP Nova Das wollte ich auch schreiben war aber zu faul dazu ^^
@SaGGan Dann braucht er nur bei der for-Schleife das "i < 1001" durch "summe<=1000" zu ändern

Nein, in der Summe sammeln sich ja alle Quadratzahlen und nicht die aktuell höchste. Diese müsste auf ihre Größe <= 1000 überprüft werden.
Gilt natürlich alles nur, wenn er wirklich die Quadratzahlen von 0 bis 1000 aufaddieren will. Sollte er die Quadrate der Zahlen von 0 bis 1000 meinen sind eure Vorschläge natürlich richtig.

@unter mir: Das von Nova schreibt aber auch 999*999 in die Summe rein, was vom wert her 998001 ist.
1 < 998001 < 1000 ?
 
Zuletzt bearbeitet:
Rück doch mal die genaue Aufgabenstellung raus, ich denke immer noch, dass AP Nova die richtige Lösung hat.

Edit:
Das von AP Nova sollte zu der Aufgabe passen.
 
Zuletzt bearbeitet:
@platin91
"Berechne die Summe der ersten 1000 Quadratzahlen/Natürlichen Zahlen."
kurz und knapp.
Ergänzung ()

denke das APNovo müsste passen
Danke
 
Wie wärs dann damit:

public void Quadratsumme()
{
summe = 0;
i = 0;
while(i * i <= 1000)
{
summe += i * i++;
}
}
 
@Darlis Das ist eine endlosschleife weil 0*0=0 und da hilft es auch nichts wenn man 0 mit 0 addiert. Wenn du aber i=1; nimmst könnte es gehen
 
@PaLLeR sorry, hab vergessen i zu inkrementieren.
 
Ich denke mal das soll einfach nur heißen, dass du nur Ganzzahlquadrate addieren sollst.
Also kein float/double
 
public class SUMMENBERECHNUNG
{
int summe;
int quadratzahl;

public void Quadratsumme()
{
summe = 0;
for(int i = 1; quadratzahl <= 1000; i++)
{
summe += i * i;
quadratzahl = i * i;
}
System.out.print("Die Summe der Zahlen 0 bis 1000 ist:");
System.out.print(summe);
}
}
 
public class SUMMENBERECHNUNG
{
int i;
int summe =0;

public void Berechenen()
{
for(i=0; i*i<=1000; i++)
{
summe += i*i;
}
System.out.print("Die Summe der Zahlen 0 bis 1000 ist:");
System.out.print(summe);
}
}

Zwei veränderte Stellen in Rot!
Problem gelöst.
 
Zuletzt bearbeitet:
Es geht hier um die Summe der ersten 1000 Quadratzahlen, nicht die Summe aller Quadratzahlen mit höchstens 1000 als Wert, so wie ich das verstehe. Dementsprechend ist 1² + 2² + 3² + ... + 999² + 1000² zu berechnen, was mein obiger Lösungsansatz macht, nichts mit "i*i <= 1000".
 
AP Nova schrieb:
Es geht hier um die Summe der ersten 1000 Quadratzahlen, nicht die Summe aller Quadratzahlen mit höchstens 1000 als Wert, so wie ich das verstehe. Dementsprechend ist 1² + 2² + 3² + ... + 999² + 1000² zu berechnen, was mein obiger Lösungsansatz macht, nichts mit "i*i <= 1000".

Nach der späteren nachformulierung des OP scheint das so zu sein, wobei halt aus der Überschrift eher das andere der Fall zu sein scheint.
Richtige Lösungen für beides sind ja nun gegeben, jetzt muss er sich nurnoch klar werden was genau er braucht. ^.~
 
Zurück
Oben