Unverständnis bei Summenberechnung Gauß vs. For

Mxxxt

Mitglied
Hallo,

ich bin Java-Anfänger und belege gerade frisch ein Studium. Ich wäre wirklich dankbar, wenn mir jemand folgendes erklären kann:

Ich habe nachfolgende Summenberechnung in einem Applet(Forschleife) und in einer Klasse(Gaußformel) geschrieben. Doch ab einen bestimmten Wert von der Variabel n, erhalte ich unterschiedliche Ergebnisse und ich raffe im Moment nicht wirklich warum.

Die Klasse mit Forschleife:
Java:
class GaussKlasse{
  public static void main(String[] args){
    int n=80000;
    int ergebnis=0;
    for(int i=1; i <= n; i++){
      ergebnis=ergebnis+i;
    }
  System.out.println("Die Summe der Zahlen von 1 bis "+n+" ist "+ergebnis);
  }
}

Das Applet mit der Gaußformel:
Java:
public class GaussApplet extends java.applet.Applet{
  int n;
  int ergebnis;
  public void init(){
    n=80000;
    ergebnis=0;
  }
  public void paint(java.awt.Graphics g){
  ergebnis=(n*(n+1))/2;
  g.drawString("Die Summe der Zahlen von 1 bis " +n+ " ist " +ergebnis ,20,25);
  }
}

Best regards
Mx
 

BuckRogers

Bekanntes Mitglied
Das Problem ist der Wert int bei Variable Ergebnis. Der Wertebereich ist zu klein für dein Ergebnis und Java switched dann das Vorzeichen. Mache daraus ein long und du kannst größere Zahlen verwenden. Dann bekommst du auch 3200040000 für 80000 heraus. ;)
 
Zuletzt bearbeitet:

Mxxxt

Mitglied
Das Problem ist der Wert int bei Variable Ergebnis. Der Wertebereich ist zu klein für dein Ergebnis und Java switched dann das Vorzeichen. Mache daraus ein long und du kannst größere Zahlen verwenden. Dann bekommst du auch 3200040000 für 80000 heraus. ;)

Guten Morgen,

besten Dank, habe es jetzt nochmal probiert und meinen Fehler ausgemacht und auch verstanden. Hatte zwar die Nacht schon mit der Deklaration herumgespielt aber im Applet die n Variabel nicht auf long deklariert gehabt. Als ich jetzt einmal alle auf long deklarierte, funktioniert es mit gleichen Ergebnissen.

Best regards
Mx
 
Zuletzt bearbeitet:

Ähnliche Java Themen

Neue Themen


Oben