Zinsberechnung mit Java?
Hallo,
ich mache gerade eine Übung, die lautet:
Schreiben Sie eine private, statische Methode endkapital(double k0, double p, int n), die berechnet, auf welches Endkapital Kn das Startkapital K0 nach n Jahren bei einer jährlichen Verzinsung von p gewachsen ist und Kn zurückgibt.
Mein Code sieht momentan so aus:
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));
}
}
Ich kann es kompilieren, aber beim Eingeben der Werte kommt immer ein Fehler:
Hauptmethode in klasse nicht gefunden. Definieren sie die Hauptmethode als public static void main(String [] args);
Also kann ich es so, wie ich es gemacht habe, nicht machen? Wie soll ich es sonst als private static umschreiben? :(
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);
}
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. ;-)
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 :)
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.
hm komisch welches Ergebnis wäre dann richtig habe die Formel halt benutzt für die umsetzung
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.
Ah, da ist mir ein Komma verrutscht. Und ich dachte schon ich wäre bald reich...
Ich glaube du brauchst eine Main Methode… also eine Methode:
public static void main(String [] args)
die deine methode endkapital aufruft.
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