1Danke
ERLEDIGT
NEIN
NEIN
ANTWORTEN
5
5
ZUGRIFFE
535
535
EMPFEHLEN
-
Hallo zusammen!
Ich habe ein Problem mit einer Uebung, bei der ich mir mein Guthaben nach x Jahren auf meinem Tagesgedkonto ausrechnen und anzeigen lassen will.
Der Zinssatz ist nach Guthabengroesse gestaffelt. Da ich noch absoluter Anfaenger bin, stehen mir nur ziemlich wenige Befehle zur Verfuegung (Ich bin sicher, es gibt viel elegantere und kuerzere Loesungen ohne tausend Mal if und while und else, kenn ich aber noch nicht).
So wie ich es gemacht habe (s.u.) hoert der Loop aber niemals auf, ausserdem aendert sich das angezeigte Guthaben nicht. Wieso?
Bitte habt Nachsicht, bin ein absoluter Anfaenger (erste Woche), ich vermute schon, dass es ein absout bescheuerter Denkfehler ist, den ich aber einfach nicht entdecke.
Vielen Dank im Voraus!
package package4;
/* Konditionen:
* 0.01 bis 5000 EUR : 1,75% p.a.
* 5000,01 bis 50.000,00 EUR: 1 % p.a.
* ab 50.000, 01 0,5 % p.a.
* Formel: A = P [(1+R)hoch n]
*/
public class Tagesgeldkonto {
public static void main (String [] args)
{
double startkap = 10000; //hier das Startkapital eingeben
double zinssatz = 0.0175;
double zinssatz2 = 0.01;
double zinssatz3 = 0.005;
int jahreend = 50; //hier die Laufzeit eintragen
int jahre = 1;
double guthaben;
if (startkap <=5000)
do
{
guthaben= startkap * Math.pow(1+zinssatz,jahre);
System.out.println(guthaben);
jahre=jahre++;
}
while (guthaben<=5000 & jahre<=jahreend);
do
{
guthaben= startkap * Math.pow(1+zinssatz2,jahre);
System.out.println(guthaben);
jahre=jahre++;
}
while (guthaben>5000 & guthaben<=50000 & jahre<=jahreend);
do
{
guthaben= startkap * Math.pow(1+zinssatz3,jahre);
System.out.println(guthaben);
jahre=jahre++;
}
while (guthaben>50000 & jahre<=jahreend);
if ((startkap>5000) & (startkap <=50000))
do
{
guthaben= startkap * Math.pow(1+zinssatz2,jahre);
System.out.println(guthaben);
jahre=jahre++;
}
while (guthaben>5000 & guthaben<=50000 & jahre<=jahreend);
do
{
guthaben= startkap * Math.pow(1+zinssatz3,jahre);
System.out.println(guthaben);
jahre=jahre++;
}
while (guthaben>50000 & jahre<=jahreend);
if (startkap >50000)
do
{
guthaben= startkap * Math.pow(1+zinssatz3,jahre);
System.out.println(guthaben);
jahre=jahre++;
}
while (jahre<=jahreend);
}
}
-
31.10.10 16:00 #2
- Registriert seit
- Jan 2009
- Ort
- Braunschweig (Ni)
- Beiträge
- 32
Hi,
vorneweg: Bitte schreib code immer in der code-Umgebung, das ist dann viel übersichtlicher.
Du hättest eine der folgenden drei Varianten nehmen können:
Code :1 2 3
jahre++; jahre += 1; jahre = ++jahre;
Nur das, was du gemacht hast darfst du nicht machen
So wie du das gemacht hast darfst du dir das folgendermaßen vorstellen (bitte korrigiere mich jemand fals ich hier Mist erzähle):
Der Wert von "jahre" wird in einen Zwischenspeicher genommen und von da aus wieder "jahre" zugewiesen. Danach wird der Wert in diesem Zwischenspeicher um eins erhöht. Das bringt dir dann aber nichts mehr.
MfG
DarkWizzard
-
Willkommen bei tutorials.de

Zuerst einmal: Bei deinen Bedingungen in den while-Schleifen verwendest du & als 'und'.
Es ist aber && ! Dasselbe gilt für 'Oder', das ist ||
Doppeltes Zeichen!
Einzelne können zwar je nach Situation sogar das Gleiche bewirken, sind aber was anderes und funktionieren nicht immer gleich wie die doppelten.
Probiers einmal mit den Doppelten
PS: Das mit den Jahren ist schon so in Ordnung
-
Ich hab deinen Code einmal etwas kompakter gemacht, als Beispiel.
Code java:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
public class Zinsen { public static void main (String [] args) { double startkap = 10000; //hier das Startkapital eingeben int jahreend = 50; //hier die Laufzeit eintragen int jahre; double guthaben; double zinssatz; guthaben=startkap; for(jahre=0;jahre<jahreend;jahre++) { if(guthaben<=5000.0)zinssatz=1.75; else if(guthaben<=50000.0)zinssatz=1.00; else zinssatz=0.50; guthaben = guthaben + (guthaben*(zinssatz/100.00)); System.out.println("Jahr " + (jahre+1) + ": " + guthaben); } } }
-
Wow, das ging ja flott! Vielen Dank!
Hat mir sehr geholfen, es lag, wie DarkWizzard berichtigt hat, am
Wieder was gelernt.PHP-Code:jahre = jahre++;
Vielen Dank auch @ sheel, ich werde mir den Unterschied zwischen Doppel-Unds und -Oders merken. Hatte in diesem Fall jedoch keine Veraenderung gebracht. Danke auch fuer die Muehe, mir eine kompakte Version anzubieten. Da bin ich wohl ueber Moskau nach Rom gewandert. Das war schon immer mein Problem.
-
Das ++ hat doch einen Unterschied gemacht?
Jetzt hab ich auch wieder was dazugelernt
Ich sollte sowas wohl nicht in C probieren und denken, dass es in Java gleich ist
Ähnliche Themen
-
JS-Popup hoert nicht auf zu laden!?
Von Suchfunktion im Forum Javascript & AjaxAntworten: 1Letzter Beitrag: 02.05.08, 17:54 -
MC- Warum ändert sich der Wert nicht?
Von Mammuth im Forum Flash PlattformAntworten: 1Letzter Beitrag: 01.10.07, 16:02 -
Wert übergeben, klappt nicht? Nur warum...
Von strex im Forum PHPAntworten: 3Letzter Beitrag: 16.03.07, 14:25 -
#1064 Error: Warum übernimmt er diesen Wert nicht
Von TomHH im Forum Relationale DatenbanksystemeAntworten: 4Letzter Beitrag: 06.01.05, 19:15 -
Warum lassen Sich PS - JPG`s nicht einbauen?
Von vlap im Forum HTML & XHTMLAntworten: 4Letzter Beitrag: 16.03.04, 22:40





Zitieren

Login





