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



## eXistenZ (29. Mrz 2010)

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 =( ;(


```
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


----------



## Bartleby (29. Mrz 2010)

Wo wird denn die Methode berechnung() aufgerufen?


----------



## SlaterB (29. Mrz 2010)

siehe auch
http://www.java-forum.org/java-basi...va-boon-kommt-zurrecht-umsetzung-aufgabe.html

neues Thema ab und zu ist gar nicht so falsch, da will ich mal nix sagen,
aber doch vorherige Erkenntnisse nicht verschweigen


----------



## eXistenZ (29. Mrz 2010)

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 (29. Mrz 2010)

Bartleby hat gesagt.:


> Wo wird denn die Methode berechnung() aufgerufen?



Ich möchte ja die Methode 
	
	
	
	





```
berechnen() {
```
 als main-Methode dieser Klasse haben und auf die Switch-Case der Methode 
	
	
	
	





```
monatstag() {
```
 zugreifen, weiß nur nicht wie ich das mache, denn jedlicher Versuch lässt nur wieder den Compiler anschlagen...


----------



## faetzminator (29. Mrz 2010)

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


----------



## eXistenZ (29. Mrz 2010)

faetzminator hat gesagt.:


> 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 (29. Mrz 2010)

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.


----------



## eXistenZ (29. Mrz 2010)

faetzminator hat gesagt.:


> 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 (29. Mrz 2010)

eXistenZ hat gesagt.:


> (...)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:

```
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 (29. Mrz 2010)

Murray hat gesagt.:


> Genau das machst du doch hier:
> 
> ```
> int aktuellerMonatstag = monatstag(varStartMonat);
> ...



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


----------

