Zinsrechnung

ekago

Mitglied
Am Anfang eines Jahres werden 1000 Euro auf ein Sparkonto eingezahlt. Wie viele Jahre
dauert es, bis bei einem Zinssatz von 2 Prozent daraus mindestens 3000 Euro geworden
sind? Das Startkapital und der Zinssatz sollen vom Benutzer eingegeben werden können.
(Antwort: 56 Jahre)

ich bin zur zeit so weit gekommen aber ich glaube da passt einiges noch nicht
ich weiß auch nicht sicher ob man da eine while oder for schleife nimmt

Java:
	public static void main(String[] args) {
		// TODO Auto-generated method stub
System.out.println("Geben Sie ihr Starkapital ein");
double startkapital= new Scanner(System.in).nextDouble();

System.out.println("Geben Sie ein Zinssatz ein");
int zinssatz= new Scanner(System.in).nextInt();

while (startkapital<=3000){
double zusatz1jahr =(startkapital) * (zinssatz)/100;

double kapitalneu=startkapital+zusatz1jahr;
System.out.println(startkapital);
}
 

Supra

Bekanntes Mitglied
Also erste Frage: Was genau funktioniert denn Momentan und was nicht?
2. Wo hängst du? Was genau willst du Wissen.
3. Zu deiner Frage for oder While schleife, man kann beide verwenden, musst du gucken welche du verwenden willst.

EDIT: kann es sein das du eine endlosschleife hast?
 
Zuletzt bearbeitet:

Joose

Top Contributor
ich weiß auch nicht sicher ob man da eine while oder for schleife nimmt

Zur Information:

Jede for-Schleife kannst du in eine while-Schleife umwandeln, jede while-Schleife kannst du natürlich auch als for-Schleife schreiben :)
Also ist es Grundsätzlich egal welche Schleife du nimmst, solange du die Bedingungen usw. richtig definierst.

Beispiel:
Java:
ArrayList<String> lines = new ArrayList<String>;
for(int i=0;i<lines.size();i++) {
    System.out.println(lines.get(i));
}

int i=0;
while(i<lines.size()){
    System.out.println(lines.get(i));
    i++;
}

Der Unterschied besteht hier nur darin, da die Deklarierung von "i" bzw. die Inkrementierung von "i" nicht im Schleifenkopf stehen.

Aber einen kleinen Denkansatz kann man hier schon beachten:
for-Schleife: Verwenden wenn man etwas X mal ausführen will. Beispiel: Du hast eine Liste und willst diese von Anfang (Index=0) bis Ende (Index=Size-1) durchgehen
Du weißt hier also wieviele Durchläufe es werden (Ende-Anfang)
while-Schleife: Verwenden wenn man etwas ausführen will, solange eine Bedingung gegeben ist. Beispiel: Du willst eine Datei solange zeilenweise lesen bis eine kommt die mit "END" beginnt
Du weißt hier nicht wieviele Durchläufe es werden da das Format was die Zeilenanzahl angeht variabel ist.

Am Ende entscheidest immer noch du ;) also nimm das was dir einfacher fällt auch wenn es für andere vielleicht unsinnger ist. Mit der Zeit gewöhnt man sich an beide Schleifen"arten".
 
Zuletzt bearbeitet:

ekago

Mitglied
Also erste Frage: Was genau funktioniert denn Momentan und was nicht?
2. Wo hängst du? Was genau willst du Wissen.
3. Zu deiner Frage for oder While schleife, man kann beide verwenden, musst du gucken welche du verwenden willst.

EDIT: kann es sein das du eine endlosschleife hast?

ja genau ich habe eine endlosschleife

mein problem ist einfach dass ich nicht weiß was ich im schleifen-rumpf reinbringen soll. dass es dazuaddiert und weiter macht.
 

ekago

Mitglied
also wenn ich mir deine antwort so durchlesen macht auf dem ersten Blick eine While schleife mehr sinn denn bezogen auf die aufgabe soll die Bedingung so oft ausgeführt werden bis kapital 3000 beträgt.:oops:


kann ich dann die durchgänge die er gebraucht hat zählen weil die würden ja denn jahren etsprechen
 

Joose

Top Contributor
also wenn ich mir deine antwort so durchlesen macht auf dem ersten Blick eine While schleife mehr sinn denn bezogen auf die aufgabe soll die Bedingung so oft ausgeführt werden bis kapital 3000 beträgt.:oops:

Sehe ich ebenfalls so ;)

Wie Gucky schon sagte: Du weißt zwar Werte zu in der Schleife, aber "startkapital" bleibt unverändert und daher läuft deine Schleife endlos.
 

lord239123

Bekanntes Mitglied
Ich würde an deiner Stelle mit folgender Formel arbeiten:
Java:
int a = 1000;
		int z = 2;
		double n =  Math.log(3000/a)/Math.log(1D+z/100D);
		System.out.println(n);

Diese Formel habe ich gerade eben hergeleitet und sie wurde gerade eben von mir getestet.
3000€ = a *(1+z/100)^n |/a
3000/a = (1+z/100)^n | log zur Basis (1+z/100)

n = log zur Basis(1+z/100) von (3000/a)

da es in der Klasse Math nur log-Methoden für die Basen 10 und e gibt, muss man ein wenig tricksen:

n = log(3000/a)/ log(1+z/100)

a ist hierbei das Startkapital und z der Zinssatz.
 
Zuletzt bearbeitet:

Supra

Bekanntes Mitglied
also wenn ich mir deine antwort so durchlesen macht auf dem ersten Blick eine While schleife mehr sinn denn bezogen auf die aufgabe soll die Bedingung so oft ausgeführt werden bis kapital 3000 beträgt.:oops:


kann ich dann die durchgänge die er gebraucht hat zählen weil die würden ja denn jahren etsprechen

Das kannst du, als kleiner tipp, manchmal macht es sinn auf papier aufzuschreiben was genau passieren soll in einem ablauf, so mäßg wie ein pseudocode.
 

Andi_CH

Top Contributor
ja genau ich habe eine endlosschleife

mein problem ist einfach dass ich nicht weiß was ich im schleifen-rumpf reinbringen soll. dass es dazuaddiert und weiter macht.

Wie wäre es mit einer Addition - die addiert dazu

Java:
	int i = 0;
	while (i < 10) {
		i = i + 1;
	}
	System.out.println("Traraaaa - while beendet");
	// Geht auch so
	i = 0;
	do {
		i = i + 1;
	} while (i < 10);
	System.out.println("Traraaaa - do - while beendet");

Ja ich weiss, man könnte auch i += 1; schreiben :)
 

Neue Themen


Oben