tutorials.de Buch-Aktion 05/2012
Like Tree3Danke
  • 1 Beitrag von MiMi
  • 1 Beitrag von MiMi
  • 1 Beitrag von MiMi
ERLEDIGT
NEIN
ANTWORTEN
9
ZUGRIFFE
900
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Santana2 Santana2 ist offline Grünschnabel
    Registriert seit
    Nov 2010
    Beiträge
    4
    Aufgabe 4: Zinsberechnung
    Ein Konto wurde am 1.2.2010 eröffnet und am 1.10.2010 will man wissen, wie viel Geld auf dem
    Konto jetzt (inklusive Zinsen) vorhanden ist. Dazu stehen alle Ein- und Auszahlungen, die in
    diesem Zeitraum gemacht wurden, in einem Journal zur Verfügung. Sie können davon ausgehen,
    dass das Journal chronologisch geordnet ist. Beim Erzeugen eines ZinsBerechnungs Objekts wird das Journal mit Ein- und
    Auszahlungen initialisiert.
    Implementieren Sie die Methode berechneZins(…).

    Wir hatten bis jetzt die drei Schleifenarten und if Bedingungen. Man sollte die Aufgabe mit diesen Methoden lösen.

    Vorgabeprogramm:

    Code java:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    
    public class ZinsBerechnung
    {
        private EinAusZahlung[] journal = new EinAusZahlung [10];
        private float rate = 0.125f;
        /**
         * Constructor for objects of class ZinsBerechnung
         */
        public ZinsBerechnung()
        {
            // initialise instance variables
            journal [0] = new EinAusZahlung(01, 02, 2010,  +500);
            journal [1] = new EinAusZahlung(01, 04, 2010,  -200);
            journal [2] = new EinAusZahlung(01, 04, 2010,  +700);
            journal [3] = new EinAusZahlung(01, 05, 2010,  -500);
            journal [4] = new EinAusZahlung(01, 06, 2010, +1000);
            journal [5] = new EinAusZahlung(01, 06, 2010,  -500);
            journal [6] = new EinAusZahlung(01, 06, 2010,  -500);
            journal [7] = new EinAusZahlung(01, 07, 2010,  +500);
            journal [8] = new EinAusZahlung(01, 9,  2010, +1000);
            journal [9] = new EinAusZahlung(01, 10, 2010, -2000);
        }
     
        /**
         * An example of a method - replace this comment with your own
         * 
         * @param  journal   Ein-/Auszahlungen
         * @return zins
         */
        public float berechneZins(EinAusZahlung[] journal)
        {
     
            
            // Hier kommt Ihre Lösung hin
            
            
            
            
        }
     
        public void testCaseZinsRechnung()
        {
            float zins;
            zins = berechneZins(journal);
            System.out.println("Der Zins beträgt: " + zins);
        }
     
    }

    Ich habe keine Ahnung wie ich das lösen soll.. Gibt es eine Möglichkeit nur immer die Ein/bzw. Auszahlungen auszulesen aus den Arrays? Die Arrays wurden so vom Dozenten vorgegeben.

    Ausserdem möchte das Programm immer eine Eingabe wenn ich es starten will. Ich weiss aber nicht was es erwartet.
    Geändert von Santana2 (25.11.10 um 15:53 Uhr)
     

  2. #2
    Avatar von timestamp
    timestamp timestamp ist offline Mitglied Rubin
    Registriert seit
    May 2010
    Ort
    Marburg
    Beiträge
    1.479
    Es wäre interessant die Klasse EInAusZahlung mal zu sehen.
     

  3. #3
    Herbertus Herbertus ist offline Mitglied Bronze
    Registriert seit
    Sep 2010
    Beiträge
    37
    Es wäre wirklich interessant zu sehen, wie die Klasse EinAusZahlung aufgebaut ist. Sicherlich hat sie eine return-Methode, welche dir den Wert zurück gibt.


    Um dann den Wert auszurechnen, gehst du über eine Forschleife (ggf. auch while, wie du es gern magst) , weil du ja die Länge(größe) des Array weißst, addierst alle Werte und rechnest dann den Zins drauf (vorrausgesetzt ihr sollt nur am Ende Zinsen geben)


    Eine Methode, die wartet, bis du eine Taste drückst, existiert hier soweit auch gar nicht. Die müsstest du selber anlegen, bist du dir da sicher, dass das gefordert ist, wo ihr gerade mal Schleifen lernt? Oder exisitiert diese schon irgendwo in einer anderen Klasse, dann solltest du die Klassen natürlich auch Posten.
    Geändert von Herbertus (25.11.10 um 13:44 Uhr)
     

  4. #4
    Santana2 Santana2 ist offline Grünschnabel
    Registriert seit
    Nov 2010
    Beiträge
    4
    Klasse EinAusZahlung:

    Code java:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    
    public class EinAusZahlung
    {
        private int tag, monat, jahr;
        private int umsatz;
        
        public EinAusZahlung(int tag, int monat, int jahr, int umsatz)
        {
            // initialise instance variables
           this.tag = tag;
           this.monat = monat;
           this.jahr = jahr;
           this.umsatz = umsatz;
        }
     
        public int getDay()
        {
            return tag;
        }
            public int getMonth()
        {
            return monat;
        }
            public int getYear()
        {
            return jahr;
        }
            public int getUmsatz()
        {
            return umsatz;
        }
    }

    Der Dozent bezieht sich auf ein Beispiel, welches wir früher mal hatten. Dabei mussten wir von Hand eine Zinsberechnung durchführen. Dort mussten wir folgendermassen vorgehen:

    Den Saldostand anhand der Einauszahlungsliste am 1. jedes Monates berechnen.

    Davon jeden Monat den Zins berechnen.

    Am Ende die Zinsen jedes Monates zusammenrechnen und am Ende durch die Anzahl Monate dividieren, in welchen Zinsen berechnet wurden (Im Beispiel 12)
    Geändert von Santana2 (25.11.10 um 15:54 Uhr)
     

  5. #5
    MiMi MiMi ist offline Mitglied Smaragd
    Registriert seit
    Sep 2007
    Beiträge
    1.177
    Schreib deinen Code doch bitte in java-tags, danke
    Santana2 bedankt sich. 
    Waere super wenn ihr euren Code in dieser Form einfuegt:
    [JAVA]System.out.println("Test :)");[/JAVA]
    wird zu:
    Code java:
    1
    
    System.out.println("Test :)");
    Tabs sind uebrigens keine Feinde :)
    Der "Erledigt Button" beisst net :) Und der "Danke Button" ist auch nicht nur zur zierde
    Danke :D

  6. #6
    Santana2 Santana2 ist offline Grünschnabel
    Registriert seit
    Nov 2010
    Beiträge
    4
    Habe nun folgendes probiert:

    Code java:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    
    public float berechneZins(EinAusZahlung[] journal)
        {
     
            float Saldo = 0;
            float Mittenzahl = 0;
            float Zins = 0;
            int Verteilung = 100;
            for (int j = 0; j < journal.length; j++) {
                if (journal.length < 0) {
                }
                else {
     
                    Saldo = journal [j].getUmsatz() + Saldo;
                }
                Mittenzahl = Saldo / Verteilung;
                Zins = Mittenzahl * rate;
            }
            return Zins;

    Kann aber nicht Testen, ob das richtig ist, ich bekomme immer folgendes Bild (Das kommt auch, wenn ich noch keinen Code einfüge, also nur das vorgegebene Musterprogramm des Dozenten öffne)

     

  7. #7
    MiMi MiMi ist offline Mitglied Smaragd
    Registriert seit
    Sep 2007
    Beiträge
    1.177
    1. Bitte Variablen in Java klein schreiben
    2. Das if (journal.length < 0) { kannst rauslassen Da du in der for-Schleife ja schon nach der Länge schaust, und er gar net in die forschleife kommt, wenn die länge 0 ist.
    Bei journal [j] nimmt das Leerzeichen weg

    3. Er erwartet einen Parameter beim Aufruf der Methode berechneZins (@param journal Ein-/Auszahlungen). Klick anstatt dem "float berechne Zins" einfach mal "testCaseZinsRechnung" an Denn dort ruft er ja schon die Methode berechneZins auf
    Geändert von MiMi (25.11.10 um 18:35 Uhr)
    Santana2 bedankt sich. 
    Waere super wenn ihr euren Code in dieser Form einfuegt:
    [JAVA]System.out.println("Test :)");[/JAVA]
    wird zu:
    Code java:
    1
    
    System.out.println("Test :)");
    Tabs sind uebrigens keine Feinde :)
    Der "Erledigt Button" beisst net :) Und der "Danke Button" ist auch nicht nur zur zierde
    Danke :D

  8. #8
    Santana2 Santana2 ist offline Grünschnabel
    Registriert seit
    Nov 2010
    Beiträge
    4
    bei test case Zinsrechnung gibt er mir 0 aus.

    Ich glaube ich bewege mich in die falsche Richtung.

    Mein Ziel war es, zum einen Immer das Saldo am Monatsende herauszufinden. Dazu kann ich ja leider nicht einfach jedes Saldo aus den arrays auslesen, da ja z.t. mehrere Bewegungen an einem Tag stattfinden.
    Wenn ich die Saldi an jedem Monatsende habe, kann ich diese addieren und daraus den Gesamtzins errechnen.

    Kann ich irgendwie angeben, dass er nur die letzte Zahl (oder wie nennt man die Einträge im Array) rauspickt?

    z.b:

    Code java:
    1
    
      journal [0] = new EinAusZahlung(01, 02, 2010,  +500);

    Dass er mir hier nur die +500 am ende nimmt und damit etwas macht?
     

  9. #9
    MiMi MiMi ist offline Mitglied Smaragd
    Registriert seit
    Sep 2007
    Beiträge
    1.177
    Das geht hier net wirklihc ums Array sondern um dein Objekt. Dieses hat folgenden Konstruktor:
    Code java:
    1
    
    EinAusZahlung(int tag, int monat, int jahr, int umsatz)
    Diese Werte gibst du bei
    Code java:
    1
    
      journal [0] = new EinAusZahlung(01, 02, 2010,  +500);
    mit. D.h. von deiner EinAusZahlung brauchst du den Umsatz. Diesen bekommst du durch die getMethode
    Wie du ja oben schon gemacht hattest (nur muss dies halt ohne das Leerzeichen nach dem journal/ arraynamen)
    Code java:
    1
    
    journal[j].getUmsatz()
    Hier bekommst du den Umsatz von der EinAuszahlung von Position j im Array.
    Geändert von MiMi (26.11.10 um 08:33 Uhr)
    Santana2 bedankt sich. 
    Waere super wenn ihr euren Code in dieser Form einfuegt:
    [JAVA]System.out.println("Test :)");[/JAVA]
    wird zu:
    Code java:
    1
    
    System.out.println("Test :)");
    Tabs sind uebrigens keine Feinde :)
    Der "Erledigt Button" beisst net :) Und der "Danke Button" ist auch nicht nur zur zierde
    Danke :D

  10. #10
    Herbertus Herbertus ist offline Mitglied Bronze
    Registriert seit
    Sep 2010
    Beiträge
    37
    Mein Ziel war es, zum einen Immer das Saldo am Monatsende herauszufinden. Dazu kann ich ja leider nicht einfach jedes Saldo aus den arrays auslesen, da ja z.t. mehrere Bewegungen an einem Tag stattfinden.
    Doch, da du mit der Methode getMonth() aus der KlasseEInAusZahlung ja den Monat weißt. Sobald sich der Wert ändert, wird der Wert nicht mehr addiert und die Addition der Werte abgebrochen.

    getMonth liefert 1 zurück, wird addiert, .. getMonth liefert 1 zurück, wird addiert,.. getMonth liefert 2 zurück, abbruch. Ein ganz simples vergleiche mit dem vorrangegangen Wert..
     

Ähnliche Themen

  1. Return eines Arrays
    Von realbora im Forum C/C++
    Antworten: 2
    Letzter Beitrag: 09.06.08, 16:12
  2. Zinsberechnung
    Von joky_joky im Forum PHP
    Antworten: 1
    Letzter Beitrag: 18.04.05, 11:25
  3. Programm zur Zinsberechnung
    Von Anouschka_93 im Forum C/C++
    Antworten: 8
    Letzter Beitrag: 01.12.04, 11:08
  4. größe eines arrays
    Von shrewm im Forum C/C++
    Antworten: 2
    Letzter Beitrag: 26.11.04, 15:50