• Wir präsentieren Dir heute ein Stellenangebot für einen Java Entwickler - m/w/d in Augsburg, München, Stuttgart oder Bamberg. Hier geht es zur Jobanzeige

Reihenwert-Berechnung, Ergebnis mit vorherigem Ergebnis vergleichen

Stephan_kl

Stephan_kl

Mitglied
Hallo,
ich bin noch ziemlich neu bei der Java-Programmierung und befinde mich gerade im Medieninfortamik-Studium.
Zum Üben habe ich mir in Buch mit Java-Übungsaufgaben geholt und nun stehe ich bei einer Aufgabe irgendwie auf dem Schlauch.

Ich habe hier eine Formel zur Reihenwert-Berechnung, diese konnte ich auch schon umsetzen.
Das Ergebnis wird auch richtig ausgegeben denke ich.

Nun meine Frage, wie kann ich das Ergebnis der Berechnung mit dem Ergebnis des vorherigen Durchlaufs der Schleife vergleichen?
Ziel soll es sein die Berechnung zu stoppen wenn der Unterschied zum vorherigen Ergebnis kleiner als 10^-5 (zehn hoch minus fünf) ist.

Aktuell sieht mein Code wie folgt aus:

Java:
public class Aufgabe5_1 {

    public static void main(String[] args) {

        double zahl1 = 1;
        double potenz = Math.pow(10, -5);
        double ergebnis = 0;

        while (zahl1 < 50) {

            ergebnis = 6 * (1 / (zahl1 * zahl1));

            System.out.println(ergebnis);

            zahl1++;
        }
    }
}

Meine Idee war jetzt das Ergebnis der vorherigen Schleife vom aktuellen Ergebnis abzuziehen und mit der Potenz zu vergleichen. Ist die Änderung kleiner als die Potenz soll die Schleife beendet werden, also quasi als Bedingung dienen. Nur fällt mir gerade nicht ein wie ich das am besten umsetze.
Ich erwarte keine fertige Lösung, ein Hinweis in die richtige Richtung würde mir schon sehr helfen :)

vielen Dank schonmal.

Viele Grüße
Stephan
 
Beste Antwort
kneitzel
Die Zuweisung muss natürlich an einer anderen Stelle erfolgen. Die Zuweisung muss erfolgen, bevor ein neues Ergebnis berechnet wird.
Also bei dem gegebenen Code wäre das dann:

Java:
        while (Math.abs(ergebnis-vorherigesErgebnis)<0.1) {
            vorherigesErgebnis=ergebnis;
            ergebnis = 6 * (1 / (zahl1 * zahl1));
            System.out.println(ergebnis);
            zahl1++;
        }

Also erst merken, dann das neue berechnen....
C

Carcharoth

Bekanntes Mitglied
Wenn ich es richtig verstanden habe, dann könntest du das Ergebnis jeweils zwischenspeichern damit du es beim nächsten Durchgang vergleichen kannst.

So etwas wie (müsstest du noch Feintunen) :
Java:
public class Aufgabe5_1 {

    public static void main(String[] args) {

        double zahl1 = 1;
        double potenz = Math.pow(10, -5);
        double ergebnis = 0;
        double vorherigesErgebnis = -1;

        while (Math.abs(ergebnis-vorherigesErgebnis)<0.1) {

            ergebnis = 6 * (1 / (zahl1 * zahl1));

            System.out.println(ergebnis);
            vorherigesErgebnis=ergebnis;
                    
            zahl1++;
        }
    }
}
 
Stephan_kl

Stephan_kl

Mitglied
Hallo,
vielen Dank für die schnelle Antwort.

Das klingt ja ganz schlimm 🥺

Ja, so schlimm ist Medieninformatik nicht ;) mir geht das mit der Programmierung nur nicht weit genug, deshalb wollte ich das nebenbei etwas weiter ausbauen.

So etwas wie (müsstest du noch Feintunen) :
Java:
public class Aufgabe5_1 {

public static void main(String[] args) {

double zahl1 = 1;
double potenz = Math.pow(10, -5);
double ergebnis = 0;
double vorherigesErgebnis = -1;

while (Math.abs(ergebnis-vorherigesErgebnis)<0.1) {

ergebnis = 6 * (1 / (zahl1 * zahl1));

System.out.println(ergebnis);
vorherigesErgebnis=ergebnis;

zahl1++;
}
}
}

So hatte ich es auch schon, nur ist das das Problem dass Ergebnis und vorheriges Ergebnis nach der Zuweisung die gleichen Werte haben, somit kommt bei Rechnung ergebnis-vorherigesErgebnis 0 raus und die Kondition der While-Schleife wird nicht nie erreicht.

Irgendwie müsste ich das Ergebnis des vorherigen Durchlaufs speichern um das dann in die Rechnung zu übernehmen. Oder ist die While-Schleife eher ungünstig dafür?

Viele Grüße
Stephan
 
kneitzel

kneitzel

Top Contributor
Die Zuweisung muss natürlich an einer anderen Stelle erfolgen. Die Zuweisung muss erfolgen, bevor ein neues Ergebnis berechnet wird.
Also bei dem gegebenen Code wäre das dann:

Java:
        while (Math.abs(ergebnis-vorherigesErgebnis)<0.1) {
            vorherigesErgebnis=ergebnis;
            ergebnis = 6 * (1 / (zahl1 * zahl1));
            System.out.println(ergebnis);
            zahl1++;
        }

Also erst merken, dann das neue berechnen....
 
Beste Antwort
Stephan_kl

Stephan_kl

Mitglied
Also erst merken, dann das neue berechnen....
Ah das wars. Ich wusste die Position der Zuweisung uns irgendwie vor die Berechnung.
Jetzt hat es auch geklappt mit der Berechnung.

Ich musste nur die Initialwerte vom Ergebnis etwas anpassen damit am Anfang nicht gleich -1 herauskommt und die Schleife beendet wird.

Java:
public class Aufgabe5_1 {

    public static void main(String[] args) {

        double zahl1 = 1;
        double potenz = Math.pow(10, -5);
        double ergebnis = 7;
        double vorherigesErgebnis = 6;
        double condition = 1;

        while (condition > potenz) {

            vorherigesErgebnis = ergebnis;

            ergebnis = 6 * (1 / (zahl1 * zahl1));

            System.out.printf("Ergebnis: %.5f\n", ergebnis);

            condition = vorherigesErgebnis - ergebnis;

            zahl1++;
        }

    }
}
 
F

fhoffmann

Top Contributor
Hallo,

es ist vorher bereits erwähnt worden (von @lara99) aber wohl verlorengegangen: Du sollst eine Reihenentwicklung (für PI^2, siehe https://de.wikipedia.org/wiki/Basler_Problem) berechnen, also muss es heißen:
Java:
ergebnis += 6 * (1 / (zahl1 * zahl1));
(Wichtig ist hier das "+" vor dem "=")

Damit weißt du auch, wie sich das neue Ergebnis vom alten Ergebnis unterscheidet (nämlich um 6 * (1 / (zahl1 * zahl1))).
Eine einfachere Version sähe damit folgendermaßen aus:
(Ich habe hier einen weiteren Hinweis von @lara99 aufgenommen, dass man Math.pow(10, -5) besser schreibt in der Form 1e-5)

Java:
public class Aufgabe5_1 {{

    public static void main(String[] args) {
        double ergebnis = 0;
        double potenz = 1e-5;
        double addiere = 1;
        double zahl1 = 1;

        while (addiere > potenz) {
            addiere = 6 * (1 / (zahl1 * zahl1));
            ergebnis += addiere;
            zahl1 += 1;
        }

        System.out.println(ergebnis);
        System.out.println(Math.PI * Math.PI); // nur zum Vergleich
    }
}
 
Zuletzt bearbeitet:
F

fhoffmann

Top Contributor
Noch zwei Bemerkungen:

- In meinem Code public class Aufgabe5_1 {{ ist nach der Kassendefinition natürlich eine Klammer zu viel.

- die Bemerkung
Das klingt ja ganz schlimm
bezog sich möglicherweise nur auf die falsche Schreibweise in

Gruß
Fritz

EDIT: Ich stelle mir gerade vor, was ein "Medieninfortamiker" alles machen kann - möglcherweise ist das ja der Beruf der Zukunft!
 
Zuletzt bearbeitet:
L

lara99

Mitglied
bezog sich möglicherweise nur auf die falsche Schreibweise in

Gruß
Fritz
Ja, darum ging es mir. Nach meiner Meinung sollte ein Student das Studienfach oder die Studienfächer, die er studiert, fehlerfrei buchstabieren können... Aber vielleicht bist du auch Legastheniker, deswegen will ich dir nicht zu nah treten. Jedenfalls erschwert es den um Hilfe Gefragten bei der Suche nach Antworten und ist zudem auch unfreundlich diesengegenüber. Also beim nächsten Mal einfach ein bisschen auf deine Rechtschreibung achten.
 
Stephan_kl

Stephan_kl

Mitglied
Ja, darum ging es mir. Nach meiner Meinung sollte ein Student das Studienfach oder die Studienfächer, die er studiert, fehlerfrei buchstabieren können... Aber vielleicht bist du auch Legastheniker, deswegen will ich dir nicht zu nah treten. Jedenfalls erschwert es den um Hilfe Gefragten bei der Suche nach Antworten und ist zudem auch unfreundlich diesengegenüber. Also beim nächsten Mal einfach ein bisschen auf deine Rechtschreibung achten.
Oh, das ist mir gar nicht aufgefallen :oops: Sonst meckert mein Rechner bei jedem Fehler.
Ich achte ab jetzt etwas mehr drauf :)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Abraham42 Berechnung der Kühlung Java Java Basics - Anfänger-Themen 12
S Hashcode-Berechnung + ^ Java Basics - Anfänger-Themen 2
J Median-Berechnung von 2D-Teilarrays Java Basics - Anfänger-Themen 56
F Tabelle - Berechnung Rang Java Basics - Anfänger-Themen 2
B Berechnung der Position von Kinderelemente von einem Elternknoten Java Basics - Anfänger-Themen 23
S Berechnung der sleep time ist falsch Java Basics - Anfänger-Themen 46
S Switch-Case zur Berechnung der Einkommensteuer Java Basics - Anfänger-Themen 15
F Berechnung der Rektaszension und Deklination eines Sterns Java Basics - Anfänger-Themen 7
2 Taschenrechner mit GUI Problem bei der Berechnung Java Basics - Anfänger-Themen 8
V Erste Schritte Pi Berechnung Java Basics - Anfänger-Themen 47
M Berechnung der Reststrecke bei Graphen Java Basics - Anfänger-Themen 1
V Algorithmus zur fortlaufenden Berechnung des duechscjnt Java Basics - Anfänger-Themen 1
B Berechnung zu einer Schleife formen Java Basics - Anfänger-Themen 6
B Berechnung Median mit Methode Java Basics - Anfänger-Themen 7
UnknownInnocent Methoden Berechnung von Anfangsgeschwindigkeit und Winkel Java Basics - Anfänger-Themen 27
K Erste Schritte Berechnung der Summe zweier Arrays Java Basics - Anfänger-Themen 15
S Erste Schritte Berechnung des Paketportos - Problem/Frage Java Basics - Anfänger-Themen 52
J Gleitkommazahlen, Berechnung von pi Java Basics - Anfänger-Themen 4
J Berechnung liefert falsches Ergebnis Java Basics - Anfänger-Themen 2
kilopack15 Verzweiflung wegen Berechnung mit Multithreading Java Basics - Anfänger-Themen 1
A Die Werte zur Berechnung müssen als Parameter übergeben werden? Java Basics - Anfänger-Themen 7
Salo Berechnung von Winkeln Java Basics - Anfänger-Themen 28
M Restbuchwert Berechnung geht nicht Java Basics - Anfänger-Themen 45
Ghostman1711 Pi berechnung Methode aufrufen Java Basics - Anfänger-Themen 2
L Rekursive Methode zur Berechnung der Potenz q hoch p Java Basics - Anfänger-Themen 17
beatles Operatoren Operatoren - Berechnung Java Basics - Anfänger-Themen 40
K Best Practice Algorithmus für Berechnung von Zahlenreihenfolge Java Basics - Anfänger-Themen 12
N Verzögerte Berechnung "Lazy" Java Basics - Anfänger-Themen 8
J Erste Schritte Rundungsproblem - Berechnung Notendurchschnitt Java Basics - Anfänger-Themen 13
S Variablen Vektor zur Berechnung verwenden Java Basics - Anfänger-Themen 4
T Java double berechnung fehler Java Basics - Anfänger-Themen 2
M Berechnung in Java Java Basics - Anfänger-Themen 4
S Berechnung der Arbeitstage in einem Zeitraum Java Basics - Anfänger-Themen 9
E Problem bei rekursiver Berechnung des Binomialkoeffizienten Java Basics - Anfänger-Themen 5
T Iterative Pi Berechnung in Rekursive Java Basics - Anfänger-Themen 2
S Double, int, Berechnung Java Basics - Anfänger-Themen 3
C Nach Berechnung runden und Wert ausgeben Java Basics - Anfänger-Themen 7
E Berechnung für Shop einbinden Java Basics - Anfänger-Themen 8
S Klassen Formel zur Berechnung .... Bitte um Hilfe Java Basics - Anfänger-Themen 7
S Euklid Algorithmus zur Berechnung des GGTs Java Basics - Anfänger-Themen 2
NicoDeluxe Berechnung in die start und paint Methode eines Applets Java Basics - Anfänger-Themen 28
P Schleife zur Berechnung von einer Summe Java Basics - Anfänger-Themen 16
F Berechnung einer linearen Abschreibung Java Basics - Anfänger-Themen 5
E Berechnung von Punkten Java Basics - Anfänger-Themen 4
D Berechnung des Abstandes von zwei Punkten in einem Koordinatensystem Java Basics - Anfänger-Themen 14
A Methoden PI-Berechnung Java Basics - Anfänger-Themen 22
S Erste Schritte Berechnung mit Daten aus CSV und Date Objekt Java Basics - Anfänger-Themen 2
C Programm zur Berechnung der Spur einer Matrix Java Basics - Anfänger-Themen 4
P Pythagoras Baum - Berechnung der Punkte Java Basics - Anfänger-Themen 9
A Erste Schritte Steuer Berechnung, Alters Abhängig Java Basics - Anfänger-Themen 5
T Erste Schritte Berechnung von gerade und ungerade Zahlen Java Basics - Anfänger-Themen 10
J Erste Schritte Berechnung Ratten vermehrung Java Basics - Anfänger-Themen 4
P falsches ergebnis bei einfacher berechnung Java Basics - Anfänger-Themen 3
T Iterative Berechnung einer Satellitenbahn Java Basics - Anfänger-Themen 20
M Java Berechnung mit mehreren Lösungen? Java Basics - Anfänger-Themen 9
D Nullstellen-Berechnung Java Basics - Anfänger-Themen 10
L Fehlermeldung bei falscher Berechnung anzeigen Java Basics - Anfänger-Themen 31
A berechnung multiplikatives inverses Java Basics - Anfänger-Themen 5
J Berechnung des aktuellen Alters auf Basis des Geburtstags Java Basics - Anfänger-Themen 45
J Datentypen Fehler bei Berechnung mit Double und Int-Werten Java Basics - Anfänger-Themen 22
G Berechnung von Winkeln mit Cosinussatz Java Basics - Anfänger-Themen 2
B Arrays verwenden für Berechnung Java Basics - Anfänger-Themen 3
R Merkwürdige Modulo Berechnung Java Basics - Anfänger-Themen 7
B Hausaufgabe Berechnung quadratischer Funktion Java Basics - Anfänger-Themen 16
U Alter Berechnung + sortierung Java Basics - Anfänger-Themen 6
P Berechnung wird nicht durchgeführt Java Basics - Anfänger-Themen 2
D Berechnung von Ostern und Ramadan! Java Basics - Anfänger-Themen 24
N Algorithmus für Berechnung einer Quersumme Java Basics - Anfänger-Themen 9
D Berechnung von Geldausgabe Java Basics - Anfänger-Themen 22
F Berechnung von Kugeln! Java Basics - Anfänger-Themen 9
M rekursive Funktion zur Berechnung der Spiegelzahl Java Basics - Anfänger-Themen 7
S Hausaufgabe: Java-Programm schreiben zur Berechnung von x und y Java Basics - Anfänger-Themen 9
Y Ergebnis einer Berechnung an die Main Methode übergeben Java Basics - Anfänger-Themen 11
Semox Ersten Wert eines Intervalls bei Berechnung einschließen Java Basics - Anfänger-Themen 8
J Logarithmische Berechnung und Arrays Java Basics - Anfänger-Themen 2
B LinkedList - Berechnung des Produkts Java Basics - Anfänger-Themen 6
B Berechnung von Preisen per Java-Programm Java Basics - Anfänger-Themen 27
M Alters berechnung aus Geburtsjahr aus dem Buch Java Basics - Anfänger-Themen 5
O Fehler in der String-Distanz-Berechnung Java Basics - Anfänger-Themen 5
-horn- "Berechnung vorwärts, Optimierung rückwärts?" - Wie würdet ihr das machen? Java Basics - Anfänger-Themen 8
P iterative Berechnung Java Basics - Anfänger-Themen 9
1 Berechnung von PI mithilfe von Buffons Nadelproblem Java Basics - Anfänger-Themen 2
G Berechnung zwei Komplexen Zahlen Java Basics - Anfänger-Themen 34
N Rekursive Berechnung der Höhe eines binären Baumes Java Basics - Anfänger-Themen 4
J Programm für interaktive Berechnung von Temperaturverläufen Java Basics - Anfänger-Themen 9
K Annährende ganzzahlige Berechnung der Wurzel Java Basics - Anfänger-Themen 8
L Berechnung von Perioden Java Basics - Anfänger-Themen 4
D einfach berechnung einer onlinezeit Java Basics - Anfänger-Themen 25
S Euklid Klasse mit Methoden zur Berechnung des ggT Java Basics - Anfänger-Themen 23
G Frage zur Primzahlen berechnung Java Basics - Anfänger-Themen 11
G Berechnung von N-Tageslinien von Aktienkursen Java Basics - Anfänger-Themen 13
G Rekursive Berechnung von n über k schlägt fehl Java Basics - Anfänger-Themen 5
G Einfache Berechnung liefert falsches Ergebnis Java Basics - Anfänger-Themen 2
W Schaltjahr Berechnung Java Basics - Anfänger-Themen 24
A Probleme mit Programm zur Pi-Berechnung Java Basics - Anfänger-Themen 6
X Temperatur-Berechnung /Array(?) Java Basics - Anfänger-Themen 5
L Berechnung Summe Java Basics - Anfänger-Themen 3
P Entropie Berechnung Java Basics - Anfänger-Themen 18
H Berechnung im Array Java Basics - Anfänger-Themen 10
M Problem mit Berechnung der Fakultät Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Anzeige

Neue Themen


Oben