Kann mir jemand wörtlich erklären, was in dem Code genau passiert?

tartagg

Mitglied
Java:
public class Ln2Iter {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        System.out.println("Please enter n > 0 and type 0 to end the programm");

        double sum = 0.0;


        while (true) {
            int n = scanner.nextInt();
            if (n == 0) {
                break;
            }
            
            {
                // wenn i rest 0 ergibt, dann - zuweisen, wenn es 1 ergibt dann + zuweisen
                for (int i = 1; i <= n; i++)
                    if (i % 2 == 0) {
                        sum -= 1.0 / i;
                    } else
                        sum += 1.0 / i;
            }
            
            System.out.println("ln(2) is approximately " + sum);
            
        }
    }
}
 
Naja, zunächst wird in der while-Schleife die Eingabe des Anwenders in n eingelesen. Ist diese 0, wird die Schleife abgebrochen (Zeile 14).

Ansonsten berechnet die for-Schleife sum + 1/1 - 1/2 + 1/3 - 1/4 + 1/5 - 1/6 + ... ± 1/n, wobei das Ergebnis sum zugewiesen wird. Dabei wird mittels des Restwertoperators % geprüft, ob der aktuelle Wert der Schleifenvariable i (1 <= i <= n) gerade oder ungerade, also durch 2 teilbar ist oder nicht. Je nach Ergebnis wird das Summenglied zu sum addiert oder von sum subtrahiert.

In Zeile 26 wird das Ergebnis noch ausgegeben, bevor die Schleife von vorne beginnt.

Das war's von meiner Seite, den Fehler im Code solltest Du nun selbst finden können.
 

Zurück
Oben