Java Programm Problem
Geizhals » Forum » Programmierung » Java Programm Problem (18 Beiträge, 146 Mal gelesen) Top-100 | Fresh-100
Du bist nicht angemeldet. [ Login/Registrieren ]
Java Programm Problem
03.10.2003, 18:56:16
Ich habe bei meinem Programm folgenden Quellcode.

es geht konkret um folgenden konstruktor  public Datumsanzeige(int tage, int monate, int jahre)

ich weiß nicht wie ich die 3 bedingungen implementieren soll dass er bei der eingabe des jahres überprüfen soll ob es ein schaltjahr ist od. nicht. vielleicht hat jemand eine idee wie ich dies besser implementieren könnte. so wies ich hier gemacht habe funkt es nicht od. ihr werdet euch denken was ist das für ein schwachsinn...
hoff jemand kann mir helfen wie ich das sinnvoll implementieren kann.

danke schonmal!

public class Datumsanzeige
{
    private Nummernanzeige tag;
    private Nummernanzeige monat;
    private Nummernanzeige jahr;
    private String datumsanzeige;    
    
    
    public Datumsanzeige()
    {
        tag = new Nummernanzeige(31);
        monat = new Nummernanzeige(13);
        jahr = new Nummernanzeige (9999);
        anzeigeAktualisieren();
    }

  
    public Datumsanzeige(int tage, int monate, int jahre)
    {          
        tag = new Nummernanzeige(32);
        monat = new Nummernanzeige(13);
        jahr = new Nummernanzeige (9999);
        setzeDatum(tage, monate, jahre);
        
         if ((monat.gibWert() == 4) || (monat.gibWert() == 6) || (monat.gibWert() == 9) || (monat.gibWert() == 11))
        {
            tag = new Nummernanzeige(31);            
            setzeDatum(tage, monate, jahre);
        }  
        if (monat.gibWert() == 2)
        {
            tag = new Nummernanzeige(29);
            setzeDatum(tage, monate, jahre);
        }
            
        if (jahr.gibWert() %400 == 0)
            if(monat.gibWert() == 2)
            {
                tag = new Nummernanzeige (30);
                setzeDatum(tage, monate, jahre);
            }
            
            else
            if (jahr.gibWert() %100 == 0)
                if(monat.gibWert() == 2)
                {
                    tag = new Nummernanzeige (29);
                    setzeDatum(tage, monate, jahre);
                }
                
            else
                if(monat.gibWert() == 2)
            {
                tag = new Nummernanzeige (30);
                setzeDatum(tage, monate, jahre);
            }
     }

    public void tagErhoehen()
    {
        tag.erhoehen();
        
        if(tag.gibWert() == 0)
        {  // Limit wurde erreicht!
            tag.erhoehen();
            monat.erhoehen();
            if (monat.gibWert() == 0)
            {
                monat.erhoehen();
                jahr.erhoehen();
            }
        }
        anzeigeAktualisieren();
    }
    
    public void monatErhoehen()
    {
        monat.erhoehen();
        if(tag.gibWert() == 0) {  // Limit wurde erreicht!
            monat.erhoehen();
            jahr.erhoehen();
        }
        anzeigeAktualisieren();
    }
    
    public void jahrErhoehen()
    {
        jahr.erhoehen();
        if(tag.gibWert() == 0) {  // Limit wurde erreicht!
            jahr.erhoehen();
        }
        anzeigeAktualisieren();
    }

    public void setzeDatum(int tage, int monate, int jahre)
    {
        tag.setzeWert(tage);
        monat.setzeWert(monate);
        jahr.setzeWert(jahre);
        anzeigeAktualisieren();
    }

  
    public String gibDatum()
    {
        return datumsanzeige;
    }
    
    
    private void anzeigeAktualisieren()
    {
        datumsanzeige = tag.gibAnzeigewert() + ":"
                      + monat.gibAnzeigewert() + ":"
                      + jahr.gibAnzeigewert();
    }
}



  

Antworten PM Übersicht Chronologisch
 
Melden nicht möglich
.
Re: Java Programm Problem
03.10.2003, 19:18:50
Auch ich hab mir das alles mal ncith genau durchgesehen, aber ein paar prinzipielle Sachen. Eine kurze Erklärung, was (vom Programm) gemacht werden soll ist fast immer hilfreich. Mit den Kommentaren bist relativ sparsam....

Was macht Nummernanzeige() denn genau, ich kann das nicht finden.

Bezüglich funktionieren oder nicht - na da würde dann ein kleines Testprogramm viel mehr bringen - alle Fälle überlegen, die getestet werden müssen und dann zuerst (!) die erwarteten Ergebnisse überlegen und dann einfach das Programm ausführen.

So, nun noch ein Bsp. herausgegriffen:
public void monatErhoehen()
    {
        monat.erhoehen();
        if(tag.gibWert() == 0) {  // Limit wurde erreicht!
            monat.erhoehen();
            jahr.erhoehen();
        }
        anzeigeAktualisieren();
    }


Ich nehme an diese Methode soll einfach das Monat um 1 erhöhen und aus Dezember den Jänner machen. Das machst dann auch gleich zu Beginn, was du dann mit dem Limit meinst ist mir schon nicht mehr klar (welcher Wert wird bei tag.gibWert genau zurückgeliefert?) Ok, sagen wir dann das diese bedingung true ergibt, warum wird das Monat dann wieder erhöht? (hast du ein Monat 0 (bzw. 13) dabei, wenn ja, warum? - du hast ja auch "monat = new Nummernanzeige(13);")

Das nur mal so als Hinweis beim überfliegen,

mar99



Das ist der ganze Jammer, die Dummen sind immer so sicher und die Gescheiten so voller Zweifel.
[Bertrand Russell]
Antworten PM Übersicht Chronologisch Zum Vorgänger
 
Melden nicht möglich
 

Dieses Forum ist eine frei zugängliche Diskussionsplattform.
Der Betreiber übernimmt keine Verantwortung für den Inhalt der Beiträge und behält sich das Recht vor, Beiträge mit rechtswidrigem oder anstößigem Inhalt zu löschen.
Datenschutzerklärung