# Sparen in Raten



## matti123 (25. Okt 2022)

Ich muss als Hausaufgabe folgendes Programm schreiben: 
Bis jetzt bin ich so weit(kann mir jemand sagenn was ich falsch gemacht habe?):


```
public class SparenInRaten {

 

    public static double readDouble(String text) {

        System.out.print(text);

        return (new java.util.Scanner(System.in)).nextDouble();

    }



    public static void main(String[] args) {

        // TODO Auto-generated method stub

        System.out.println("Sparen in Raten");

        System.out.println("===============");

        double g = readDouble ("Geben Sie das Guthaben am Jahresanfang ein:");

        double r = readDouble ("Geben Sie die Monatsrate ein:");

        double j = readDouble ("Geben Sie den Jahreszinssatz ein:");

        double m = 1;

        while (m<=12) {

            g = (r+(g+(g/100.*j)));

            m++;

        }

        System.out.println("Das Guthaben am Ende des Jahres beträgt: "+g);

    }

}
```


----------



## matti123 (25. Okt 2022)

kleiner Nachtrag:


----------



## httpdigest (25. Okt 2022)

Dein Code benutzt `r` (die Monatsrate) überhaupt nicht. Jede IDE sollte dir das auch sagen.


----------



## matti123 (25. Okt 2022)

httpdigest hat gesagt.:


> Dein Code benutzt `r` (die Monatsrate) überhaupt nicht. Jede IDE sollte dir das auch sagen.


Ich habe es jetzt so ausgebessert wie ich das Programm Original hatte r war nur nicht drin weil ich schon begonnen habe es zu ändern


----------



## Jw456 (25. Okt 2022)

zu deiner Formel wo machst du denn das ?
 erste Rate 12/12 zweite 11/12 ... sehe ich nicht in der Formel


----------



## KonradN (25. Okt 2022)

Du hast doch die Hinweise zu der Verzinsung der Raten in keiner Weise benutzt.

Zinsrechnung ist aber doch prinzipiell bekannt, oder?

Dann kannst Du ja mal die folgenden Fälle berechnen:

Du hast am Jahresanfang Betrag x auf dem Konto und der Betrag wird einfach mit einem Zinssatz verzinst.
Du hast die xte Rate, diese wird mit x/12 Jahreszinsen verzinst

Wenn Du diese Fälle berechnen kannst, dann kannst Du auch die Summe betrachten.


----------



## Jw456 (25. Okt 2022)

```
int m = 12;
double summeZinsen = 0;

        while (m > 0) {
            double zinsMonat = zinsJahr * m / 12;
            summeZinsen = summeZinsen + monatsRate*zinsMonat/100;
            m--;
        }
        guthaben = guthaben + guthaben * zinsJahr/100;
        guthaben = guthaben + monatsRate*12 + summeZinsen;
```

etwas ausfürlich etwa so


----------



## matti123 (25. Okt 2022)

Jw456 hat gesagt.:


> ```
> int m = 12;
> double summeZinsen = 0;
> 
> ...


Danke


----------



## matti123 (26. Okt 2022)

KonradN hat gesagt.:


> Du hast doch die Hinweise zu der Verzinsung der Raten in keiner Weise benutzt.
> 
> Zinsrechnung ist aber doch prinzipiell bekannt, oder?
> 
> ...


Jetzt bin ich schon näher dran: 

```
public class SparenInRaten {
    
    public static double readDouble(String text) {
        System.out.print(text);
        return (new java.util.Scanner(System.in)).nextDouble();
    }

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        System.out.println("Sparen in Raten");
        System.out.println("===============");
        double g = readDouble ("Geben Sie das Guthaben am Jahresanfang ein:");
        double r = readDouble ("Geben Sie die Monatsrate ein:");
        double j = readDouble ("Geben Sie den Jahreszinssatz ein:");
        double m = 1;
        double m2 = 12;
        while (m<=12 && m2>=1) {
            j = j/12 *m2;
            g = (r+(g+(g/100.*j)));
            m++;
            m2--;
        }
        System.out.println("Das Guthaben am Ende des Jahres beträgt: "+g);
    }
}
```


----------



## KonradN (26. Okt 2022)

Wieso unterteilst Du es nicht in mehrere Berechnungen? Der wichtigste Grundsatz bei jeder Programmierung ist KISS: Keep It Simple, Stupid!
Und das bekommt man am einfachsten hin mit Teile und Herrsche. Teile ein Problem, das komplex ist, in mehrere kleine, einfache Probleme auf!

Daher: Teile das Problem auf und löse dann die einfachen Teilprobleme und führe die Ergebnisse zusammen. Dann hast Du auch einen einfachen Code, den Du auch verstehen kannst und in dem Du mögliche Fehler finden kannst.

Dazu gehört dann auch der Punkt: Wieso nutzt Du keine Variablen, die lesbar sind? m, m2, g, r, j ... Du willst mir doch nicht erzählen, dass Du da wirklich auf Anhieb weisst, was was ist. Evtl. ist das auch ein Teil des Problems. 

Nebensächlich ist dann schon fast: Bei Dir ist die Variable m unnötig. Diese führst Du zwar in der Schleife mit aber die Variable wird sonst nirgends verwendet. Das ist also schlicht ein unnötiges Verkomplizieren des Codes.


----------



## Jw456 (26. Okt 2022)

einige Fehler.
zb.  das  j = j/12 *m2;
du willst ein  zwöftel   vom Jahreszinssatz  haben,  jetzt weist du das dem Jahreszinssatz  zu, falsch 
Schaue warum ich eine neue Variable benutzt habe.


----------



## Jw456 (26. Okt 2022)

Hier wie du es auf dem Papier rechen würdest.
Ich hohhe du verstehst  jetzt deine Aufgabe.


----------

