Zinsberechnung mit Java?

2 Antworten

Wenn ein Java-Programm gestartet wird, dann benötigt der Interpreter/die VM eine Methode, bei der es anfangen soll, Code auzuführen. In Java ist diese Methode die mit folgender Signatur:

public static void main(String[] args);

Wenn du ein Java-Programm ausführst, dann ruft die VM quasi nur diese Methode in der Klasse auf, die du gerade ausführst.

In dieser Methode kannst du dnan genauer beschreiben, was dein Programm tun soll, hier beispielsweise willst du dort womöglich Testcases reinbauen:

public static void main(String[] args){
    endkapital(123.0, 0.2, 0);
    endkapital(123.0, 0.0, 1);
    endkapital(0.0, 0.2, 1);

    endkapital(-123.0, 0.2, 1);
    endkapital(123.0, -0.2, 1);
    endkapital(123.0, 0.2, -1);

    endkapital(123.0, 1.3, 1);

    endkapital(123.0, 0.2, 1);
    endkapital(123.0, 0.2, 2);
    endkapital(123.0, 0.2, 3);

    endkapital(123.0, 0.1, 1);
    endkapital(123.0, 0.2, 1);
    endkapital(123.0, 0.3, 1);

    endkapital(123.0, 0.2, 1);
    endkapital(456.0, 0.2, 1);
    endkapital(789.0, 0.2, 1);
}

Miriamb8 
Beitragsersteller
 19.03.2022, 12:43

aber da steht doch dass ich mit private static anfangen soll :( und wenn ich public static void... schreibe dann krige ich noch eine Fehler meldung, das private illegal statrt of type ist

Destranix  19.03.2022, 12:47
@Miriamb8

Was für eine Fehlermeldung bekommst du genau wo und wie sieht dein Code mit der Main-Methode aus?

GuteAntwort2021  19.03.2022, 12:52
@Miriamb8

Ohne main-Methode wird das Programm nicht starten. Und die Deklaration der main-Methode ist immer gleich:

public static void main(String[] args) {
	//Hier der Code, der mit dem Start ausgeführt werden soll
}

Das zeigt dir ja auch der Fehler an:

Hauptmethode in klasse nicht gefunden. Definieren sie die Hauptmethode als public static void main(String [] args);

Daher einfach noch erweitern:

public class Zinsen {	
	private static void endkapital(double k0, double p, int n){	
		//Meine Rechen Formel = k0 * (1 + p) hoch n
		//Math.pow berrechnet hoch n
	
		System.out.println(k0 * (1 + p));
		System.out.println(Math.pow(p, n));
	}
	
	public static void main(String[] args) {
		//Hier der Code, der mit dem Start ausgeführt werden soll
		endkapital(1000.0, 0.05, 20);
	}
}

Das wird dann ohne Compilerfehler ausgeführt. Allerdings ergibt deine Rechnung noch nicht so viel Sinn. ;-)

Miriamb8 
Beitragsersteller
 19.03.2022, 12:56
@GuteAntwort2021

oh und wenn ich beliebige zahlen einsetzten möchte ( also nicht explizit 1000.0, 0.05, 209 im befehl ? aber warum ergibt die noch keinen Sinn ? tut mir leid für die viele Fragen ich möchte mich sehr gern verbessern, bin noch anfänger :)

Destranix  19.03.2022, 13:00
@Miriamb8
oh und wenn ich beliebige zahlen einsetzten möchte ( also nicht explizit 1000.0, 0.05, 209 im befehl ?

Du kannst einmal die Main-Methode umschreiben. Oder du kannst die Werte als aprameter an das Programm übergeben. (Letzteres ist allerdings ein klein wenig komplizierter, wenn auch nicht so viel.)

aber warum ergibt die noch keinen Sinn ?

Das berechnete Ergebnis ist falsch.

Miriamb8 
Beitragsersteller
 19.03.2022, 13:03
@Destranix

hm komisch welches Ergebnis wäre dann richtig habe die Formel halt benutzt für die umsetzung

GuteAntwort2021  19.03.2022, 13:04
@Miriamb8

Dann passt du die Zahlen entsprechend an.

Die Methode endkapital erwartet ja 3 Werte. Einmal ein double für das Kapital, ein double für den Zinssatz und ein int für die Anzahl der Jahre.

Ich habe den Funktionsaufruf also nur mit Beispielwerten demonstriert. Welche Werte du da letztlich nimmst, ist ja egal.

 aber warum ergibt die noch keinen Sinn ? 
System.out.println(k0 * (1 + p))

Gibt das Kapital nach einem Jahr aus.

System.out.println(Math.pow(p, n));

Gibt p (also 2% in meinem Beispiel) hoch n (in meinem Beispiel also 20) aus.

Im Grunde also 0,02^20. Das ist nicht hilfreich. Was du eigentlich möchtest ist:

System.out.println(k0 * Math.pow((1 + p), n));

Das gibt dann das angesparte Kapital nach n Jahren mit dem Prozentsatz p aus.

Destranix  19.03.2022, 13:05
@Miriamb8

Im Beispiel wäre das

1000.0 * (1 + 0.05)^20 = 3325256,73;

Ungefähr das sollte dir auch angezeigt werden, wenn du deine Methode korrrekt implementiert hast.

Ich glaube du brauchst eine Main Methode… also eine Methode:

public static void main(String [] args)

die deine methode endkapital aufruft.

Woher ich das weiß:Studium / Ausbildung