Zinsberechnung - Fehler im Code

Hallo Zusammen,
Der Zweck meines Codes sollte sein, die Anzahl Jahre zu berechnen und auszugeben, die es benötigt beim Startkapital K (wird vom User über Keyboard eingegeben) mit 5% Zins pro Jahr auf 10'000.- zu kommen.
Wenn der User 1 oder weniger eingibt, sollte die Console -1 ausgeben, da es mit diesem Startkapital nicht möglich ist.

Jetzt habe ich das zuerst mit einem Schreibtischtest mal versucht zu konstruieren und in Java umgesetzt und wie ihr bestimmt auf den ersten Blick erkennen könnt. Funktioniert es nicht und ich bin ratlos weswegen. Einerseits motzt der Compiler wegen meiner If-Anweisung, das es ein ungültiges Package ist und wenn ich es dann doch i-wie compilieren kann, gibt es mir den Wert years nicht. Und wenn ich return years; schreibe, motzt der Compiler, years sei ein "unexpectet value to return".

Könnt ihr mir helfen? Danke.

Code:
public class Zinsrechnung {
  public static void main (String []args){
    int k=Integer.parseInt(args[0]);
    double sum= 0;
    int years= 0;
    double z= 0;
    if(k<=1) {System.out.print("-1");}
    else{
     
        while(sum<=10000){
          z=k*5/100;
          sum=z+k;
          years=years+1;
          return;
        }
      }
   
    System.out.print(years+"Jahre sparen um CHF 10'000.- zu erreichen");
  }
}
 

JStein52

Top Contributor
Weisst du denn was return macht ? Speziell in deiner Methode main ?
Ich vermute mal du willst deine Schleife beenden und dahinter weitermachen. Und das geht mit break;
 
ich wollte, respektiv dachte, dass return years, den neu berechneten Wert nach jedem Schlaufendurchgang (bis while-Bedingung erfüllt ist) zurück gibt.
Oder anders gesagt, ich versuche die Anzahl Jahre analog der Anzahl Schlaufendurchgänge zu berechnen.
 

JStein52

Top Contributor
Nein, return verlässt die Methode in der du bist. Und das ist hier die main-Methode, d.h. das Programm beendet sich.
Und deine Zinsformel ist irgendwie falsch oder ich verstehe nicht was du rechnest.
Das Kapital nach n Jahren bei einem Startkapital von K0 und einem Zinsatz von p errechnet sich:
Kn = K0 * (1+p)^n

Richtig wäre dann so was:
Code:
public class ZinsBerechnung {

    public static void main(String[] args) {
        int K0 = 3000;     // das Startkapital
        double Kn = 0;    // das Kapital nach n Jahren
        int years = 1;    // wir beginnen mit 1 Jahr
        double z = 0.05;  // 5% Zins
        if (K0 <= 1) {
            System.out.print("-1");
        } else {

            while (Kn <= 10000) {
                Kn = K0 * Math.pow(1 + z, years);
                years = years + 1;
            }
        }

        System.out.print(years + "Jahre sparen um CHF 10'000.- zu erreichen");
    }
}
 
ich habe nicht die Kapitalzinsformel genommen, sondern berechne bei der variablen z wie viel Zins in CHF ich im Jahr erhalte für gegebenes Startkapital, das mit 5% verzinst wird und addiere das so lange mit dem Startkapital bis ich auf 10'000.- komme. Ist denn nun return das einzige Problem, dass es mir die Anzahl years nicht anzeigt?
 

JStein52

Top Contributor
Wenn deine Berechnung so wie du es beschreibst stimmt ist es das einzige Problem weil er ja gleich beim ersten Schleifendurchlauf das Programm beendet. Ich habe allerdings deine Berechnung nicht getestet weil ich nicht wusste was du da machst. streiche einfach die Zeile mit return ersatzlos
 

JStein52

Top Contributor
Ich habe es mir nochmal angeschaut und du müsstest es so machen:
Code:
            while (k <= 10000) {
                k = k + k*z;
                years = years + 1;
            }
Du musst erstens die Zinsen immer zum Kapital dazuaddieren und zweitens in jedem Jahr die Zinsen vom aktuellen Kapital berechnen.
 
X

Xyz1

Gast
Das sollte so auch:
Java:
    private static float knOhneZinseszins(float k0, float p, float n) {
        return (float) (k0 + (k0 * p / 100.0) * n);
    }
    private static float knMitZinseszins(float k0, float p, float n) {
        return (float) (k0 * Math.pow(1.0 + p / 100.0, n));
    }
    private static float nOhneZinseszins(float k0, float p, float kn) {
        return (float) ((kn - k0) / (k0 * p / 100.0));
    }
    private static float nMitZinseszins(float k0, float p, float kn) {
        return (float) (Math.log(kn / k0) / Math.log(1.0 + p / 100.0));
    }

Das ist die Zinseszins-Formel, das ist NICHT die Sparkassenformel.

Aber evtl kann mir jemand helfen, ich bekomme, aufgerufen mit
Code:
knOhneZinseszins(1000, 5, 50);
knMitZinseszins(1000, 5, 50);
nOhneZinseszins(1000, 5, 3500);
nMitZinseszins(1000, 5, 11467.4f);

Code:
3500.0
11467.399
50.0
50.0

Aber der zweite Wert soll doch nicht 11467.399 sein, sondern genauer 11467.4. :confused:
Wo entsteht die Ungenauigkeit, bei Berechnung des Zinsfußes???
 

Trjavnamen

Bekanntes Mitglied
das Taschenrechnerergebnis ist nur mit Modula zu erreichen 11467,3997857536760348514 um einen Wert mit 2 Nachkommatellen zu bekommen aber auf 3 stellen auszurechnen müßte man erst alles auf mit 100 multiplizierren um mit Mat.cell zu runden und dann durch 100 zu teilen.
l
 
X

Xyz1

Gast
ist nur mit Modula zu erreichen
Modula? Ich weiß leider nicht zu 100 % jenau was du damit meinst.

...Die Anzahl der Jahre... dann muss natürlich noch aufgerundet werden immer.

Wahrscheinlich ist die Übung so gedacht, das man Schleifen usw übt. Dann ist das rechnerische Ermitteln nicht angebracht.

Aber ist doch jetzt gut, '11467,39....' und ich hatte auf Darstellungs Rundungs oder Rechenfehler getippt. Falsch gedacht. :D
 

Trjavnamen

Bekanntes Mitglied
Java:
public class Zinsberechnung {
  
     public static void main (String []args){
           int k=Integer.parseInt(args[0]);
          int sum= k;//
           int years= 0;//jahre
          int z= 5;//Zinssatz
         int zinsen =0;
          
           while(sum <=10000){
              
               zinsen=(sum*z)/100;
               sum=zinsen+sum; 
                 years=years+1;
                 System.out.println(k);
                 System.out.println(years);
                 System.out.println(zinsen);
                 System.out.println(sum);
                 }
          System.out.print(years+"Jahre sparen um CHF 10'000.- zu erreichen");
5000 Kapitaleinsatz
15 Years
494 letzte Rate
10383 erreichtes kapital
15Jahre sparen um CHF 10'000.- zu erreichen
 
Zuletzt bearbeitet von einem Moderator:
X

Xyz1

Gast
Hallo @Trjavnamen ,
das würde mit dem auf der anderen Seite genannten Zinsfußes genauer gehen - denn du addierst....
In meiner Sig. steht beschrieben , wie du Code-Tags verwenden kannst.
 

Trjavnamen

Bekanntes Mitglied
Java:
package zinsen;

import java.io.BufferedReader;
import java.io.InputStreamReader;

public class Zinsberechnung {
   
      public static void main (String []args){
            int k=Integer.parseInt(args[0]);
           int sum= k;////anfangssumme für zinsberechnung
            int years= 0;//jahre
           int z= 5;//Zinssatz
          int zinsen =0;
           
            while(sum-k <=9999){
               
                zinsen=(sum*z)/100;
                sum=zinsen+sum; 
                  years=years+1;
                  System.out.println(k);
                  System.out.println(years);
                  System.out.println(zinsen);
                  System.out.println(sum);
                  }
           System.out.print(years+"Jahre sparen um CHF 10'000.- zu erreichen");
            
               
                
                   
                
              }
           
              }
 
Zuletzt bearbeitet von einem Moderator:

JStein52

Top Contributor
Code:
        double K0 = 5000.0;     // das Startkapital
        int years = 0;    // wir beginnen mit 1 Jahr
        double z = 0.05;  // 5% Zins
        while (K0 <= 10000) {
            K0 = K0 + K0 * z;
            years = years + 1;
        }
        System.out.println(years + "Jahre sparen um CHF 10'000.- (" + K0 + ") zu erreichen");
Aber habe mich verschrieben, 15 Jahre war schon richtig !
 

Trjavnamen

Bekanntes Mitglied
mit 7,5 Zinseszins ist erfahrungsgemäß nach 10 Jahren das Doppelte angespahrt.In der Umgekehrten Logik ist ein Kredit ohne Zinsabtragung nach 10 Jahren doppelt so hoch. Banken rechnen vierteljährlich ab: Kredit + Zinsen für Kredit auf 3 Monate - gezahlte Abschlagszahlung +Kontogebühren = neuer Kreditbetrag. Wird nachträglich die Abschlagssumme geändert kann es passieren das der rückzuzahlende Kredit erhöht wird(anfallende Zinsen schlucken die Rückzahlung und mehr) . Die letzte Weltwirtschaftskriese ist durch die Zinspolitik der Amerikanischen Banken ausgelöst worden. Anstatt 3.5% für Krediete verlangten sie einfach 7.5% was jedem Deutschen im Prinzip ebenfalls treffen kann mit max.10 Jahre Laufzeit festschreibung auf Zinsfuß. Leute die heute 1% bezahlen und bei der Bank ohne Bauspahrvertrag arbeiten können in zehn Jahren einen so hohen Zinssatz bekommen das sie schlichtweg in Schulden versinken.
 
X

Xyz1

Gast
Was ist der Zinsfuss
Zinsen = 5 (%)
Zinsfuß = p = 5/100 = 0,05
Zinsfaktor = q = 1 + 5/100 = 1,05
Habe ich das jetzt aufgefasst. Mit dem Zinsfaktor ists angenehmer zu rechnen. Kann auch berechnet werden durch (100+5)/100.

@Trjavnamen , wahrscheinlich Quatsch. Der Zinssatz müsste 100(2^(1/10)-1)=7.1773462536293164213... betragen , damit sich nach 10 Jahren alles verdoppelt. Aber gern gelesen.
 

JStein52

Top Contributor
Der Zinssatz müsste 100(2^(1/10)-1)=7.1773462536293164213... betragen , damit sich nach 10 Jahren alles verdoppelt
exakt !
mit 7,5 Zinseszins ist erfahrungsgemäß nach 10 Jahren das Doppelte angespahrt.
Wieso erfahrungsgemäss ? Das lässt sich genau ausrechnen :)
Im Übrigen artet das Ganze hier wohl etwas aus. Zur Berechnung wurde bereits alles gesagt und die TE wird sich inzwischen kaputtlachen
 

Trjavnamen

Bekanntes Mitglied
haha 5% von 100€ sind 5€= 5%Zinssen=5€ Im erstgenannten Fall für das erste Jahr 5% von10 000 gleich 500 bei im 2 Jahr 5% von 10500 =525 € usw. bei Zinsfuß, Zinsatz (und im Volksmund 5%Zinsen)wobei das ausschreiben von diesem Zeichen"%" es immer ein Prozentsatz ist.
 
Zuletzt bearbeitet:

Trjavnamen

Bekanntes Mitglied
package zinsen;

public class Zinsberechnung {

public static void main (String []args){
int k=Integer.parseInt(args[0]);
double sum= k;////anfangssumme für zinsberechnung
double years= 0.0;//jahre
double z= 5.0;//Zinssatz ohne %zeichen
double zinsen =0.0;// die resultierende Zinsen Betrag
double zinsenR =0.0; //die gerundeten Zinsen
while(sum-k <=10000.00){

zinsen=(sum*z)/100;// AUSRECHNEN DER ZINSEN
zinsenR =(( Math.ceil(zinsen*100))/100); //Runden
sum=zinsenR+sum; // ADDIEREN ALTE SUM ZUR NEUEN SUM

years=years+1;
System.out.println(k);
System.out.println(years);
System.out.println(zinsenR);
System.out.println(sum);

}
System.out.print(years+"Jahre sparen um CHF 10'000.- zu erreichen");





}

}
 

Trjavnamen

Bekanntes Mitglied
Alles mit Double ausgerechnet. Programm hat den Vorteil das man auch zinsatz mit Kommastelle eintragen kann.PS in der console kann man nach oben scrollen und die Berechnung vom ersten bis zum letzten Jahr sehen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Erste Schritte Zinsberechnung mit Java?! Java Basics - Anfänger-Themen 8
A Zinsberechnung mit for-Schleife Java Basics - Anfänger-Themen 14
richis-fragen FileChannel (inChannel/outChanel) Fehler wenn Leerzeichen enthalten Java Basics - Anfänger-Themen 17
F Kann mir jemand bei dem Fehler helfen? Java Basics - Anfänger-Themen 6
Juelin jedit Fehler beim starten Java Basics - Anfänger-Themen 2
I Frage Thymeleaf -> Fehler ignorieren und mit "" ersetzen? Java Basics - Anfänger-Themen 15
E Matrizenmultiplikation Fehler Java Basics - Anfänger-Themen 0
Z Fehler Zeiterfassungsprogramm Anzeige Java Basics - Anfänger-Themen 3
C SwingWorker mit Fehler Java Basics - Anfänger-Themen 2
monsterherz Fehler Semikolon fehlt - ich weiss aber nicht wo da noch eines hin sollte... Java Basics - Anfänger-Themen 21
G Compiler-Fehler Fehler in Zeile 1 beheben, wie? Java Basics - Anfänger-Themen 9
W Fehler in der Datei pom.xml Java Basics - Anfänger-Themen 19
marcelnedza Finde meinen Fehler in einer Methode nicht, Java Karol Java Basics - Anfänger-Themen 15
monsterherz einfache Methode mit Fehler den ich nicht finde Java Basics - Anfänger-Themen 21
monsterherz if / else if mit Fehler den ich leider nicht finde Java Basics - Anfänger-Themen 11
N Interpreter-Fehler Compiler zeigt keine Fehler an, aber das Programm läuft nicht (BlueJ) Java Basics - Anfänger-Themen 2
ohneInformatik; Dynamische Zinsen. Wo liegt der Fehler? Java Basics - Anfänger-Themen 4
Fiedelbambu deriveFont Fehler wer kann Helfen? Java Basics - Anfänger-Themen 4
I Ical4j / Kalender einlesen von URL - Fehler: "Unparseable date" Java Basics - Anfänger-Themen 16
Lion.King Fehler in double und int Java Basics - Anfänger-Themen 7
H BlueJ: was genau ist hier der Fehler? Java Basics - Anfänger-Themen 14
berserkerdq2 Habe ein Spiel entwickelt, dass immer in der 4 Runde einen cast-Fehler erhält Java Basics - Anfänger-Themen 3
D Datentypen LocalDate.parse() ergibt Fehler Java Basics - Anfänger-Themen 5
stormyark Fehler beim überschreiben einer Variable Java Basics - Anfänger-Themen 1
T String Array Fehler beim Index Java Basics - Anfänger-Themen 3
N Fehler "Cannot instantiate the type" Java Basics - Anfänger-Themen 3
L Ich weis nicht was der Fehler ist! Java Basics - Anfänger-Themen 14
L30nS JNI Fehler, JRE und JDK Java Basics - Anfänger-Themen 8
E Executable jar file fehler Java Basics - Anfänger-Themen 9
S Fehler beim Programm Java Basics - Anfänger-Themen 2
U Warum kriege ich hier eine nullpointer exception, sehe den Fehler nicht (swing) Java Basics - Anfänger-Themen 1
J Syntax-Fehler? Java Basics - Anfänger-Themen 2
Jose05 Fehler im Programm feststellen Java Basics - Anfänger-Themen 2
S Methoden 2 non-static Methoden, trotzdem Fehler "non static method can not be referenced from a static context" Java Basics - Anfänger-Themen 9
G Taschenrechner ergibt Fehler in if-Abfrage Java Basics - Anfänger-Themen 6
I Fehler bei for-Schleife Java Basics - Anfänger-Themen 6
lol5443 Tic Tac Toe Fehler Java Basics - Anfänger-Themen 5
K Fehler bei der Implementierung Java Basics - Anfänger-Themen 6
N Fehler im Code (Aufgabe für Anfänger) Java Basics - Anfänger-Themen 11
W Verschachtelte If-else --> finde meinen Fehler nicht Java Basics - Anfänger-Themen 30
J Fehler bei array aus anderer Klasse Java Basics - Anfänger-Themen 3
H Fehler bei integer Division Java Basics - Anfänger-Themen 28
C Fehler beim erstellen eines Objektes Java Basics - Anfänger-Themen 3
N Was bedeutet dieser Fehler Java Basics - Anfänger-Themen 2
fuerteb Compiler-Fehler Methode wird nicht bzw. als Fehler erkannt Java Basics - Anfänger-Themen 4
Lion.King Fehler Java Basics - Anfänger-Themen 5
AlexG. Nullpointer exeption Fehler Java Basics - Anfänger-Themen 0
C Fehler im Code Java Basics - Anfänger-Themen 10
J Anfänger, Fehler; "Der Hund liegt begraben" Java Basics - Anfänger-Themen 3
Aqtox Hallo ich muss für die Schule ein Wuerfell Duell erstellen jedoch habe ich ein fehler Java Basics - Anfänger-Themen 4
V Wer findet den Fehler :) Java Basics - Anfänger-Themen 12
B ArrayIndexOutOfBoundsException, ich finde den Fehler nicht? Java Basics - Anfänger-Themen 10
A Compiler Fehler - not a statement Java Basics - Anfänger-Themen 2
Arita welche Fehler gibt es noch? wie kann ich es noch vervollständigen Java Basics - Anfänger-Themen 15
S Fehler bei Code mit SubStrings für mich nicht auffindbar. Java Basics - Anfänger-Themen 4
S Kriege Fehler "Exception in thread" beim Benutzen von SubStrings. Java Basics - Anfänger-Themen 2
H Logik Fehler erkennen Java Basics - Anfänger-Themen 21
T Fehler in Caesar-Chiffre Java Basics - Anfänger-Themen 7
R Fehlermeldung aber WO liegt der Fehler? Java Basics - Anfänger-Themen 7
B Nicht reproduzierbarer Fehler bei Kompilierung - Shortcut "Bereinigung" Compiler ? Java Basics - Anfänger-Themen 4
Nerdinfekt BMI Rechner, fehler beim Zurückgeben des Strings? Java Basics - Anfänger-Themen 2
pumpgun99 Fehler Meldung "else without if" Java Basics - Anfänger-Themen 3
P Was bedeutet dieser Fehler? Java Basics - Anfänger-Themen 31
KogoroMori21 Java Datum Differenz (kleiner Fehler) Java Basics - Anfänger-Themen 10
N java.util.InputMismatchException Fehler Java Scanner Java Basics - Anfänger-Themen 5
H Fehler: NullPointerException und ich weiß net warum Java Basics - Anfänger-Themen 4
R Ich sehe meinen fehler nicht Java Basics - Anfänger-Themen 8
Johannes_ece Fehler: Application Terminated (TypeError): var$0.$moveToolTo is not a function Java Basics - Anfänger-Themen 4
GermanPie Fehler in Putty (kein Hauptmanifestattribut, in jar) Java Basics - Anfänger-Themen 4
M Scannen von *.txt - Dateien; wo sind der oder die Fehler? Java Basics - Anfänger-Themen 4
P Methoden aufrufen - Fehler Java Basics - Anfänger-Themen 20
JavaClap "Bruchrechner" liefert Fehler/keine Ausgabe bei Addition und Subtraktion Java Basics - Anfänger-Themen 0
B if Clause Fehler Java Basics - Anfänger-Themen 2
G Fibonacci Zahlenreihe Fehler Java Basics - Anfänger-Themen 4
A Fehler beim Ausführen einer class Datei Java Basics - Anfänger-Themen 6
B Fehler, aber ich weiß nicht warum Java Basics - Anfänger-Themen 3
C system cannot be resolved Fehler in Eclipse Java Basics - Anfänger-Themen 18
J Fehler im Code, aber ich weiß nicht wieso! Java Basics - Anfänger-Themen 6
M Compiler-Fehler Fehler beim Ausführen des Codes Java Basics - Anfänger-Themen 25
M While-Schleifen-Fehler Java Basics - Anfänger-Themen 4
N Fehler bei JUnit Test Java Basics - Anfänger-Themen 5
C Projekte in 2 versch. Arbeitsbereichen: auf ein Projekt verweisen (ohne Fehler zu bekommen) Java Basics - Anfänger-Themen 8
R Java SQL Fehler! Java Basics - Anfänger-Themen 4
L non-static Fehler Java Basics - Anfänger-Themen 16
C Fehler beim Speichern (Build projekt) Java Basics - Anfänger-Themen 42
L Methoden Wie Löse ich ext Methoden Aufruf Fehler? Java Basics - Anfänger-Themen 3
F Methoden Bitte Helft mir meinen Fehler zu finden. Möchte in diesem Bankenprogramm durch die Konsoleneingabe auswählen welches Konto reduziert und welches erhö Java Basics - Anfänger-Themen 17
C Fehler bei der Compilierung Java Basics - Anfänger-Themen 1
T Mein Programm hat Fehler Java Basics - Anfänger-Themen 4
S Warum dieser Fehler? Java Basics - Anfänger-Themen 1
B Fehler bei Ausführung Java Basics - Anfänger-Themen 5
Kirby.exe Fehler beim Ausgeben Java Basics - Anfänger-Themen 2
X java.lang.NullPointerException fehler ? Java Basics - Anfänger-Themen 1
L Wo ist der Fehler? Java Basics - Anfänger-Themen 87
J Fehler in Programm: Index -1 out of bounds for length 0 Java Basics - Anfänger-Themen 5
M JOptionPane Fehler bei "Abbrechen" des Fensters Java Basics - Anfänger-Themen 10
N Fehler bei string Attribut! Java Basics - Anfänger-Themen 18
W Wo liegt der Fehler? Java Basics - Anfänger-Themen 8
G Palindromtest mit Angabe WO der Fehler ist Java Basics - Anfänger-Themen 2
J Wo ist der Fehler im Programmcode? Java Basics - Anfänger-Themen 7

Ähnliche Java Themen


Oben