Rentenrechnung

Roffel

Mitglied
Servus

meine Aufgabe lautet:
EW = e · (1 + r)^N + e · (1 + r)^N−1 + e · (1 + r)^N−2 + ... + e · (1 + r)

Formulieren Sie ein Programm,das einen Einzahlungsbetrag e, einen Zinssatz r sowie eine Laufzeit N
über den Scanner einliest. Den Rentenendwert nach zuvor genannter Formel berechnet und auf der
Standardausgabe ausgibt.

also die Lösung habe ich raus bekommen.
Java:
public static  void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        
        System.out.println(" Geben Sie den Einzahlungsbetrag e ein");
        double e=sc.nextDouble();
        
        System.out.println(" Geben sie Zinssatz r ein");
        double r=sc.nextDouble();
        
        System.out.println("geben Sie die Laufzeit N ein");
        double N =sc.nextDouble();
      double EW;
        for (  EW=0; N>0;N--) {
            EW=EW+e*(Math.pow(1+r,N));}
        
        System.out.println(EW);
    }
}

so und jetzt zu meiner Frage...
Was ich allerdings gerade irgendwie nicht verstehe ist, wieso ich das auch nicht so lösen könnte:

Java:
import java.util.Scanner;
public class Blatt3Übung {
    public static void main(String[] args) {
        Scanner sc= new Scanner(System.in);
        
        System.out.println(" Bitte geben Sie den Zahlungsbetrag ein");
        double e=sc.nextDouble();
        
        System.out.println("Geben sie den Jahreszins ein");
        double r=sc.nextDouble();
        
        System.out.println("Geben sie die Laufzeit N ein");
        double N=sc.nextDouble();
        double EW=0;
        double i=0;
        for (EW;i<=N;i++) { EW=EW+e*(Math.pow(1+r,N));}
        
        System.out.println(EW);
irgendwie steh ich da grad auf dem Schlauch...
ich könnte doch die variable von 0 hochzählen lassen und aufhören wenn i größer als die Jahre N sind, und diese Summen ergeben dann auch den gesamten EW. Wo liegt denn grad hier mein Denkfehler??
weil da kommen unterschiedliche Ergebnisse raus...

Grüße
Roffel
 

Michael...

Top Contributor
Variablen schreibt man klein, ausserdem würde ich mir angewöhnen diesen einen sprechenden Namen zugeben, z.B. endWert statt EW

Der Unterschied zwischen oben und unten ist, dass sich oben N während des Schleifendurchlaufs verändert unten aber konstant bleibt.
 
S

SlaterB

Gast
unten müsste i statt N in die Formel, außerdem musst du auf genau gleiche Start- und Endwerte achten,
gib einfach in jedem Schleifendurchlauf in beiden Schleifen aus, mit welchem Werten gerechnet und welche Teilergebnisse addiert werden,
dann dürfte alles klar sein,

am übersichtlichsten natürlich mit günstigen Beispielen, etwa N=4, nicht 200
 

Roffel

Mitglied
okay, danke herzlichen Dank.
das mit dem N macht jetzt Sinn =)

Java:
double N=sc.nextDouble();
        double EW=0;
        double i=0;
        for (EW;i<=N;i++) { 
            EW=EW+e*(Math.pow(1+r,i));}
        
        System.out.println(EW);

Bei for (EW;i<=N;i++) kommt noch ein Fehler , den ich bisher auch nicht verstehe:
"not a statement" aber wieso denn?
mein initialwert ist EW =0, dann soll die schleife solange fortfahren bis gleich unserem N ist und i wird immer raufgezählt.... wo ist da denn nun schon wieder der Hacken?

Grüße
Roffel
 
S

SlaterB

Gast
wenn du zu EW nichts zu sagen hast, dann lasse das weg, nur EW irgendwo hinzuschreiben bringt die Welt nicht weiter
for (;i<=N;i++) {

edit:
und bevor du gleich fragst: ich schrieb schon
außerdem musst du auf genau gleiche Start- und Endwerte achten,
bisher ist die Schleife bzw. i nicht ganz richtig, versuche selber herauszufinden welche Indexe die richtigen sind,
stelle nicht einfach hier ne Frage..
 
Zuletzt bearbeitet von einem Moderator:

Oben