Tageszins von ??.??.2010 bis ??.??.2010

eXistenZ

Mitglied
Hallo zusammen,

Inhalt der Aufgabe ist es, ein Programm zu erstellen, das ohne Einbetten von anderen Java-Paketen den Endbetrag eines Kapitals ausrechnet das von einem beliebigen, vom User eingegeben Datum bis zu einem ebenfall, beliebigen, vom User eingegebenen Datum verzinst wird, wobei nur der Jahreszins vom User angegeben wird.
Dementsprechend rechne ich also erst einmal den Tageszins aus und des weiteren zähle ich die Tage hoch, und berechne dann das ganze.
Ich habe mit Hilfe meines BlueJ's auch schon einmal angefangen die Aufgabe zu lösen und komme nunmehr einfach nicht weiter.

Mein genaues Problem kann ich nur soweit beschreiben, das ich Mit Hilfe der Switch-Case-Anweisung in der 1. Methode auf die Rechnung in der 2. Methode zugreifen muss.

Ich spamme jetzt einfach mal meinen Code und hoffe, dass dadurch klarer wird, was mein Problem ist.
Der Compiler sagt mir zwar, dass die Syntax ok ist, jedoch rechnen tut das Ding kein Stück =( ;(

Java:
package de.jsa;

public class Jahreszins2
{
    long kapital = TastaturAbfrage.eingabeLong("Bitte geben Sie Ihr Kapital ein, dass Sie verzinsen lassen wollen: ");
    long jahreszins = TastaturAbfrage.eingabeLong("Bitte geben Sie den Jahreszins in % an: ");
    long startTag = TastaturAbfrage.eingabeLong("Bitte geben Sie den Tag des Datums an, von dem an Sie Ihr Geld anlegen: ");
    long startMonat = TastaturAbfrage.eingabeLong("Bitte geben Sie den Monat des Datums an, von dem an Sie Ihr Geld anlegen: ");
    long endeTag = TastaturAbfrage.eingabeLong("Bitte geben Sie den Tag des Datums an, bis zu dem Sie Ihr Geld anlegen: ");
    long endeMonat = TastaturAbfrage.eingabeLong("Bitte geben Sie den Monat des Datums an, bis zu dem Sie Ihr Geld anlegen: ");

    public int monatstag(int monat)
    {
        
        switch (monat)
        {
            case 1:
            case 3:
            case 5:
            case 7:
            case 8:
            case 10:
            case 12:
                return 31;
            case 2:
                return 28;
            case 4:
            case 6:
            case 9:
            case 11:
                return 30;
        }   
        return 0;
    }       
    
    public void berechnung (int monat)
    {
        int varStartMonat = 0;
        startMonat = varStartMonat;
        double tageszins = (jahreszins/360) * (30/monat);
        int zaehlerTage = 0;
        int aktuellerMonatstag = monatstag(varStartMonat);

        zaehlerTage += (aktuellerMonatstag - startTag);

        while(startMonat < endeMonat)
        {
            startMonat++;
            aktuellerMonatstag = varStartMonat;
            zaehlerTage += aktuellerMonatstag;
        }

        zaehlerTage += endeTag;
        double endkapital = kapital*(tageszins*(startTag + zaehlerTage));
        System.out.println("Ihr Kapital nach der oben angegebenen Zeit beträgt: "+endkapital+" €.");
    }
}

Ich hoffe das eine Antwort nicht zu stressig ist bzw. zu viel Aufwand benötig und freue mich auf Eure Antworten.

An dieser Stelle bereits herzlichen Dank für's Lesen,


eXistenZ
 
Zuletzt bearbeitet von einem Moderator:

eXistenZ

Mitglied
Hab in nem anderem Forumbereich gelesen, das es diesen "HA"-Bereich gibt und habe den Schwerpunkt verlagert! ^^
Danke für die Anregung, sollte nicht unterm Tisch verschwinden, eher konkretisiert neu erstellt werden und das auch noch im richtigem Bereich! ;)

PS: alter Beitrag wurde auch als "erledigt" abgehakt, um zu verhindern das 2 Beiträge der selben Art und Weise durchs Forum wandern.
 

eXistenZ

Mitglied
Wo wird denn die Methode berechnung() aufgerufen?

Ich möchte ja die Methode
Java:
berechnen() {
als main-Methode dieser Klasse haben und auf die Switch-Case der Methode
Java:
monatstag() {
zugreifen, weiß nur nicht wie ich das mache, denn jedlicher Versuch lässt nur wieder den Compiler anschlagen...
 

eXistenZ

Mitglied
du brauchst eine Methode mit der Signatur [c]public static void main(String[] args)[/c], diese kann von der JVM aufgerufen werden.


ehhhm... nein, weil ich eine Starterklasse angelegt habe, die auf meine Menüklasse zugreift über die ich wiederum diese Klasse aufrufen werde, sobald sie funzt ^^
Ich möchte ja nur, das die unten stehende Methode so auf die obere zugreift, das sie den Rückgabewert des RETURNs aus der Switch-Case saugt und verarbeitet...
Der Rückgabewert in dem Beispiel wäre die 31, 28 oder 30 die in einem integer(int) hinterlegt wird, oder irre ich mich evtl?
 

faetzminator

Gesperrter Benutzer
es wird ja die Anzahl Tage in [c]aktuellerMonatstag[/c] gespeichert?

Edit: Btw, ich kenn das so, dass man, egal wie viele Tage der Monat hat, jeder Monat für 30 Tage zählt. So gewinnt man z.B. vom 28. Feb. ausserhalb eines Schaltjahres auf den 1. März 2 Tage, welche es gar nicht gibt.
 
Zuletzt bearbeitet:

eXistenZ

Mitglied
es wird ja die Anzahl Tage in [c]aktuellerMonatstag[/c] gespeichert?

Edit: Btw, ich kenn das so, dass man, egal wie viele Tage der Monat hat, jeder Monat für 30 Tage zählt. So gewinnt man z.B. vom 28. Feb. ausserhalb eines Schaltjahres auf den 1. März 2 Tage, welche es gar nicht gibt.

1. Denke doch schon, mir wurde es so erklärt das ein [c]return-statement[/c] einen wert zurückgibt, aber nicht ausgibt, weil das wiederum über [c]system.out[/c] gehandhabt wird

2. Der Sinn des Programms ist es ja das ganze zu zerlegen [c]vom Jahreszins auf den Tageszins[/c] und evtl. soll im nächstem Schritt sogar der Stundenzins berechnet werden und das genaue Ergebnis erhält man nunmal nur, wenn man die genaue Zahl der Tage benutzt, was meiner Meinung nach (keine Kritik oder so) an meiner Fregestellung abweicht, weil ich ja nur wissen möchte, wie ich mit der 2. Methode meiner Klasse auf die Switch-Case der 1. Anwendung meiner Klasse zugreife um die return-statements in die rechnung mit einzubeziehen.

Gruß

eXistenZ
 

Murray

Top Contributor
(...)weil ich ja nur wissen möchte, wie ich mit der 2. Methode meiner Klasse auf die Switch-Case der 1. Anwendung meiner Klasse zugreife um die return-statements in die rechnung mit einzubeziehen.
Genau das machst du doch hier:
Java:
       int aktuellerMonatstag = monatstag(varStartMonat);
Damit rufst du aus der Methode berechnung die Methode monatstag auf, woraufhin aktuellerMonatstag das durch return-Anweisung aus monatstag definierte Ergebnis annimmt. Allerdings ist varStartMonat immer 0, so dass auch das Ergebnis immer 0 sein wird.
 

eXistenZ

Mitglied
Genau das machst du doch hier:
Java:
       int aktuellerMonatstag = monatstag(varStartMonat);
Damit rufst du aus der Methode berechnung die Methode monatstag auf, woraufhin aktuellerMonatstag das durch return-Anweisung aus monatstag definierte Ergebnis annimmt. Allerdings ist varStartMonat immer 0, so dass auch das Ergebnis immer 0 sein wird.

aha, das ist schon mal eine super Antwort! :toll:
 

Neue Themen


Oben