Zinsberechnung mit for-Schleife

Status
Nicht offen für weitere Antworten.
Nabend liebe User,

hab ein Problem mit der Zinsberechnung mit Hilfe der for-Schleife.
Es soll über 3 Jahre gehen. Zinssatz ist 4% und es gibt eine jährliche Einzahlung von 5000€.
Darin liegt eigtl auch schon mein Problem. Kriege es hin, dass erste Jahr auszugeben, mit dem richtigen Betrag von dann 5200€. Die anderen beiden Jahre werden zwar auch ausgegeben, jedoch mit dem gleichen Betrag.
Bekomme es nicht hin, dass die Einzahlung von 5000€ übernommen wird. Hier mein Text aus dem bisherigen Programm von mir

public static void main(String[] args) {
double Einzahlung=5000;
double Zinssatz=1.04;
double Endbetrag;
int Laufzeit =0;
for (int i=1; i<4;i++){
Endbetrag=Einzahlung*Zinssatz;
Laufzeit= Laufzeit + 1;
System.out.println(Laufzeit + " " + "Jahr" + ":" + " " + Endbetrag);

Ausgabe ist dann immer

1 Jahr: 5200
2 Jahr: 5200
3 Jahr: 5200


Kann mir jemand bitte helfen, was ich an meiner for-Schleife ändern muss?!

Vielen Dank
 
Endbetrag= Endbetrag* Zinssatz + Einzahlung;
oder
Endbetrag= (Endbetrag+Einzahlung)* Zinssatz;
 
Endbetrag=Einzahlung*Zinssatz;

Du setzt Endbetrag im jedem Durchlauf auf den selben Wert.
 
Muss ich dafür noch eine for-Schleife in das Programm schreiben?
Er gibt mir immer die gleichen Werte aus, da er die Einzahlung für das 2te und 3te Jahr noch nicht berücksichtigt.

Und wenn ich Endbetrag= (Endbetrag+Einzahlung)* Zinssatz; eingebe, sagt er mir das "Endbetrag" nicht definiert wurde. Zeigt mir da einen Fehler an
 
Vielen Dank, es hat geklappt.
Aber so richtig verstehen mag ich es nicht. Müsste es nicht eigtl mehr for Schleifen entwickelt werden?

Es sieht ja so aus

double Einzahlung=5000;
double Zinssatz=1.04;
double Endbetrag=0;
int Laufzeit =0;
for (int i=1; i<4;i++){
Endbetrag =(Endbetrag+Einzahlung)*Zinssatz;
Laufzeit= Laufzeit + 1;
System.out.println(Laufzeit + " " + "Jahr" + ":" + " " + Endbetrag);

Was ich nur sehe ist, Endbetrag=(Endbetrag+Einzahlung)*Zinssatz
Das ergibt ja nach dem ersten Jahr 5200€
Im zweiten Jahr müsste doch eigtl das gleiche rauskommen oder liegt es daran, dass ich den Endwert auf i=<4 gesetzt habe, und die Schleife solange läuft bis sie diesen Punkt erreicht hat?
Dann würde es für mich logisch klingen.
 
ok erst einmal die Frage, was für eine Verzinsung du haben magst:
1. Nur einmal wird eingezahlt, und nur dieser Betrag wird verzinst:
Code:
double Einzahlung=5000;
double Zinssatz=0.04; //<-0.04!!!!
double Endbetrag=Einzahlung; 
for (int i=1; i<4;i++){ 
   Endbetrag =  Einzahlung * Zinssatz + Endbetrag;
   System.out.println("Jahr: " + i + " -> " + Endbetrag);
}

2. Nur einmal eingezahlt, aber Zinsen werden mit verzinst (Zinseszins):
Code:
double Einzahlung=5000;
double Zinssatz=1.04; //<-1.04!!!
double Endbetrag=Einzahlung; 
for (int i=1; i<4;i++){ 
   Endbetrag =  Endbetrag * Zinssatz;
   System.out.println("Jahr: " + i + " -> " + Endbetrag);
}

3.Es wird jedes Jahr eingezahlt und vorjährig verzinst:
Code:
double Einzahlung=5000;
double Zinssatz=1.04; //<-1.04!!!
double Endbetrag=Einzahlung;  //Eigentlich 0 im ersten jahr, da für dieses Jahr zuerst zinsen gezahlt wurden, danach eingezahlt wird
for (int i=1; i<4;i++){ 
   Endbetrag =  Endbetrag * Zinssatz + Einzahlung;
   System.out.println("Jahr: " + i + " -> " + Endbetrag);
}

4. nachjährige Verzinsung:
Code:
double Einzahlung=5000;
double Zinssatz=1.04; //<-1.04!!!
double Endbetrag=0;  //<- 0!!!
for (int i=1; i<4;i++){ 
   Endbetrag =  (Endbetrag + Einzahlung) * Zinssatz;
   System.out.println("Jahr: " + i + " -> " + Endbetrag);
}

so des müsste jeden Fall abdecken. Und Rechnungen müssten auch stimmen.

Gruß
seejay
 
am.anfang.stand.java hat gesagt.:
Vielen Dank, es hat geklappt.
Aber so richtig verstehen mag ich es nicht. Müsste es nicht eigtl mehr for Schleifen entwickelt werden?

Es sieht ja so aus

double Einzahlung=5000;
double Zinssatz=1.04;
double Endbetrag=0;
int Laufzeit =0;
for (int i=1; i<4;i++){
Endbetrag =(Endbetrag+Einzahlung)*Zinssatz;
Laufzeit= Laufzeit + 1;
System.out.println(Laufzeit + " " + "Jahr" + ":" + " " + Endbetrag);

Was ich nur sehe ist, Endbetrag=(Endbetrag+Einzahlung)*Zinssatz
Das ergibt ja nach dem ersten Jahr 5200€
Im zweiten Jahr müsste doch eigtl das gleiche rauskommen oder liegt es daran, dass ich den Endwert auf i=<4 gesetzt habe, und die Schleife solange läuft bis sie diesen Punkt erreicht hat?
Dann würde es für mich logisch klingen.

axo hatte ich davor falsch verstanden. Die ganze Mühe umsonst 😉
also
Code:
Jahr       Enbetrag                                                           Einzahlung        Ergebnis
0                 0                                                                 5000             5000*1.04
1                 5000*1.04                                                    5000             ((5000*1.04)+5000)*1.04
2                 ((5000*1.04)+5000)*1.04                              5000             (((5000*1.04)+5000)*1.04) + 5000) *1.04
Hoffe so ist es verständlich. Endbetrag wird ja jedes Jahr neu gesetzt, deswegen erhöht es sich pro Schleifendurchgang
 
Jip, das hatte ich ja mir auch schon fast gedacht. Schrieb irgendwo, dass die Schleife ja immer wiederholt wird und daher der Betrag beim 2ten und dritten Jahr dazugerechnet wird

Danke
 
Eine andere Frage, wie schreibt man das Programm so, dass durch einen beliebigen Wert eingibt den man eingibt, danach einen Zinssatz usw... und das Programm dann die Eingaben umrechnet.
Hier ist es ja ein fester Satz, der berechnet wird und man müsste in den Code reingehen um z.B den Zinssatz zu verändern....
Hat jemand eine Idee?
 
import javax.swing.JOptionPane;

public class Zinsrechner {

/** Creates a new instance of Uebungsaufgabe_7 */
public static void main(String[] args) {
String sEinzahlung = JOptionPane.showInputDialog("Geben Sie den jährlichen einzuzahlenden Betrag ein");
String sZinssatz = JOptionPane.showInputDialog("Geben Sie den gewünschten Zinssatz ein");
String sJahre = JOptionPane.showInputDialog("Geben Sie die gewünschte Laufzeit ein");
int Einzahlung = Integer.parseInt(sEinzahlung);
int Zinssatz = Integer.parseInt(sZinssatz);
int Jahre = Integer.parseInt(sJahre);
System.out.println("Betrag: " + (Einzahlung*Zinssatz));

Das ist mein Code, jedoch fehlt da noch einiges, wie bekomme ich hin, dass der Zinssatz nicht die Zahl ist, die man eingibt, sondern Zinssatz/100+1
Außerdem fehlt noch die Ausgabe für die xx Jahre. Hat jemand eine Idee?
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben