Ungewollte Doppelpunkte

pappenheimer

Neues Mitglied
Moin zusammen,

ich arbeite gerade Übungsaufgaben von "Java lernen mit BlueJ" von Kölling. Bei einer Uhreaufgabe habe ich eine 24-Stunden-Anzeige, die ich jetzt soweit erweitert habe, dass sie nur 12 Stunden mit AM/PM anzeigt. Funktionieren tut es soweit, außer dass sich nach dem Stundenwechsel in der Ausgabe 2 mal je ein zusätzliches ":" einschleicht. Also ich habe "11:59:59 pm" stehen und nachdem ich die Sekunde erhöhe sollte da eigentlich "12:00:00 am" stehen, allerdings entstehen nach dem Stunden/Sekunden-Wechsel 2 zusätzliche Doppelpunkte, also "12:00::00: am" und ich verstehe nicht, wo die zusätzlichen Doppelpunkte herkommen...
Hier mein Code:

Java:
/**
 * Die Klassen Uhrenanzeige implementiert die Anzeige einer Digitaluhr.
 * Die Anzeige zeigt Stunden und Minuten. Der Anzeigebereich reicht von
 * 00:00 (Mitternacht) bis 23:59 (eine Minute vor Mitternacht).
 *
 * Eine Uhrenanzeige sollte minütlich "Taktsignale" (über die Operation
 * "taktsignalGeben") erhalten, damit sie die Anzeige aktualisieren 
 * kann. Dies geschieht, wie man es bei einer Uhr erwartet: Die 
 * Stunden erhöhen sich, wenn das Minutenlimit einer Stunde erreicht
 * ist.
 * 
 * @author Michael Kölling und David J. Barnes
 * @version 2008.03.30
 */
public class Uhrenanzeige
{
    private Nummernanzeige stunden;
    private Nummernanzeige minuten;
    private Nummernanzeige sekunden;
    private String zeitanzeige;    // simuliert die tatsächliche Anzeige
        
    /**
     * Konstruktor für ein Exemplar von Uhrenanzeige.
     * Mit diesem Konstruktor wird die Anzeige auf 00:00 initialisiert.
     */
    public Uhrenanzeige()
    {
        stunden = new Nummernanzeige(24);
        minuten = new Nummernanzeige(60);
        sekunden = new Nummernanzeige(60);
        anzeigeAktualisieren();
    }

    /**
     * Konstruktor für ein Exemplar von Uhrenanzeige.
     * Mit diesem Konstruktor wird die Anzeige auf den Wert
     * initialisiert, der durch 'stunde' und 'minute' 
     * definiert ist.
     */
    public Uhrenanzeige(int stunde, int minute, int sekunde)
    {
        stunden = new Nummernanzeige(24);
        minuten = new Nummernanzeige(60);
        sekunden = new Nummernanzeige(60);
        setzeUhrzeit(stunde, minute, sekunde);
    }

    /**
     * Diese Operation sollte einmal pro Minute aufgerufen werden -
     * sie sorgt dafür, dass diese Uhrenanzeige um eine Minute
     * weiter gestellt wird.
     */
    public void taktsignalGeben()
    {
       { sekunden.erhoehen();
        if(sekunden.gibWert() == 0)   // Limit wurde erreicht!
            minuten.erhoehen();
            if(minuten.gibWert() == 0)   // Limit wurde erreicht!
            stunden.erhoehen();
        }
       anzeigeAktualisieren();
    }

    /**
     * Setze die Uhrzeit dieser Anzeige auf die gegebene 'stunde' und
     * 'minute'.
     */
    public void setzeUhrzeit(int stunde, int minute, int sekunde)
    {
        stunden.setzeWert(stunde);
        minuten.setzeWert(minute);
        sekunden.setzeWert(sekunde);
        anzeigeAktualisieren();
    }

    /**
     * Liefere die aktuelle Uhrzeit dieser Uhrenanzeige im Format SS:MM.
     */
    public String gibUhrzeit()
    {
        return zeitanzeige;
    }
    
    /**
     * Aktualisiere die interne Zeichenkette, die die Zeitanzeige hält.
     */
    private void anzeigeAktualisieren()
    {
        int stunde = stunden.gibWert();
        String amPm = "am";
        if (stunde > 11) {
            amPm = "pm";
            stunde = stunde - 12;
            
        }
        
               
        if (stunde == 0) {
            stunde = 12;
        }
        
        zeitanzeige = stunde + ":" + minuten.gibAnzeigewert()+":" + sekunden.gibAnzeigewert()+" " + amPm;
    }
}

Kann mir jemand sagen, wo mein Fehler liegt?
 
Zuletzt bearbeitet von einem Moderator:

Joose

Top Contributor
Java:
    private void anzeigeAktualisieren()
......
        zeitanzeige = stunde + ":" + minuten.gibAnzeigewert()+":" + sekunden.gibAnzeigewert()+" " + amPm;

Kann mir jemand sagen, wo mein Fehler liegt?

Nein, anhand des von dir geposteten Codes geht das leider nicht.
Du baust dir hier zwar diesen String zusammen, aber ich denke mir das Problem liegt in der Klasse Nummernanzeige
 

pappenheimer

Neues Mitglied
Haha, danke für den Hinweis, die Nummernanzeige hatte ich gar nicht auf dem Zettel, hab reingeguckt und hab es sofort entdeckt :)
 
Zuletzt bearbeitet:

Ähnliche Java Themen

Neue Themen


Oben