Denkfehler bei for Schleife

AndiXY

Neues Mitglied
Kurze Frage, ich soll einfach eine Funktion schreiben welche einen Summenformel löst:

Java:
public class Summen {
    public static long summe1(){
        long wert1 = 0;
        long wert2 = 0;
        for (int i=0; i<=3; i++)
            wert1 = ((i-1)*(i-1));
            wert2 = wert1+wert2;
    return wert2;
    }
    public static void main(String[] args){

        System.out.println(summe1());

    }
}

aber weshalb kommt nicht das selbe Ergebnis raus wie bei dieser Lösung:

Java:
public class Summen {
    public static long summe1(){
        long wert1 = 0;
        for (int i=0; i<=3; i++)
            wert1 += ((i-1)*(i-1));
    return wert1;
    }
    public static void main(String[] args){

        System.out.println(summe1());

    }
}

Ich bin das jetzt mehrere male Gedanklich durchgegangen, eigentlich müssten doch beide Varianten zum gleichen Ergebnis führen.
 
Zuletzt bearbeitet von einem Moderator:

Joose

Top Contributor
Bitte deinen Java-Code in Code-Tags packen, danke!
[code=java] ... dein code .. [/code]

Zu deinem Problem:
Du hast bei der for-Schleife die {}-Klammern vergessen. Ohne diese ist nur die nächste Anweisung Teil der for-Schleife.
In deinem Fall ist das wert1 = ((i-1) * (i-1)); ... wert1 wird x mal neu berechnet und danach 1x zu wert2 dazuaddiert.

Achte darauf deinen Code korrekt zu formatieren, wenn du mit einer IDE arbeitest lass diese den Code für dich formatieren, dann sind solche Fehler besser erkennbar (z.B. durch fehlerhafte Einrückung)!
Java:
public class Summen {
   public static long summe1() {
       long wert1 = 0;
       long wert2 = 0;
       for (int i = 0; i <= 3; i++)
           wert1 = ((i - 1) * (i - 1));
       wert2 = wert1 + wert2;
       return wert2;
   }
   
   public static void main(String[] args) {
       System.out.println(summe1());
   }
}
 

Neue Themen


Oben