Hallo liebes Forum,
ich habe mich gerade neu hier angemeldet und muss ich euch gleich mit einem Problem belästigen und hoffe ihr könnt mir helfen.
Ich habe zwei Klassen erhalten, ein Mal Uhrenanzeige und Nummernanzeige. Es soll eine Uhr darstellen mit Stunden und Minuten. Wenn ich ein Taktsignal gebe, sollen die Minuten um 1 erhöht werden und wenn die Minuten nach 59 wieder auf 0 umspringen, soll die Stunde um 1 erhöht werden.
So weit so gut .. nun soll ich das Ganze so umprogrammieren, dass diese Uhrenanzeige auch Sekunden enthält und ich komme mit dem Taktsignal nicht so ganz klar.
Es werden jetzt zwar die Sekunden beim Signal geben erhöht und auch die Minuten um 1, wenn die Sekunden wieder auf 0 springen, aber ich bekomme es einfach nicht hin, dass die Stunden umspringen, wenn die Minuten wieder auf 0 springen.
Ich hoffe ihr könnt mir helfen.
Uhrenanzeige:
Und falls es noch erforderlich ist der Code zur Nummernanzeige:
ich habe mich gerade neu hier angemeldet und muss ich euch gleich mit einem Problem belästigen und hoffe ihr könnt mir helfen.
Ich habe zwei Klassen erhalten, ein Mal Uhrenanzeige und Nummernanzeige. Es soll eine Uhr darstellen mit Stunden und Minuten. Wenn ich ein Taktsignal gebe, sollen die Minuten um 1 erhöht werden und wenn die Minuten nach 59 wieder auf 0 umspringen, soll die Stunde um 1 erhöht werden.
So weit so gut .. nun soll ich das Ganze so umprogrammieren, dass diese Uhrenanzeige auch Sekunden enthält und ich komme mit dem Taktsignal nicht so ganz klar.
Es werden jetzt zwar die Sekunden beim Signal geben erhöht und auch die Minuten um 1, wenn die Sekunden wieder auf 0 springen, aber ich bekomme es einfach nicht hin, dass die Stunden umspringen, wenn die Minuten wieder auf 0 springen.
Ich hoffe ihr könnt mir helfen.
Uhrenanzeige:
Java:
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.
*/
/**
* Sekunde bekommt Takt, Minute wird erhöht. Musst noch hinbekommen, dass
* Stunde erhöht wird.
*/
public void taktsignalGeben()
{
sekunden.erhoehen();
if(sekunden.gibWert() == 0) { // Limit wurde erreicht!
minuten.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()
{
zeitanzeige = stunden.gibAnzeigewert() + ":"
+ minuten.gibAnzeigewert() + ":"
+ sekunden.gibAnzeigewert();
}
}
Und falls es noch erforderlich ist der Code zur Nummernanzeige:
Java:
public class Nummernanzeige
{
private int limit;
private int wert;
/**
* Konstruktor für Exemplare der Klasse Nummernanzeige.
* Setzt das Limit, bei dem die Anzeige zurückgesetzt wird.
*/
public Nummernanzeige(int anzeigeLimit)
{
limit = anzeigeLimit;
wert = 0;
}
/**
* Liefere den aktuellen Wert als int.
*/
public int gibWert()
{
return wert;
}
/**
* Liefere den Anzeigewert, also den Wert dieser Anzeige als
* einen String mit zwei Ziffern. Wenn der Wert der Anzeige
* kleiner als zehn ist, wird die Anzeige mit einer führenden
* Null eingerückt.
*/
public String gibAnzeigewert()
{
if(wert < 10) {
return "0" + wert;
}
else {
return "" + wert;
}
}
/**
* Setze den Wert der Anzeige auf den angegebenen 'ersatzwert'.
* Wenn der angegebene Wert unter Null oder über dem Limit liegt,
* tue nichts.
*/
public void setzeWert(int ersatzwert)
{
if((ersatzwert >= 0) && (ersatzwert < limit)) {
wert = ersatzwert;
}
}
/**
* Erhöhe den Wert um Eins. Wenn das Limit erreicht ist, setze
* den Wert wieder auf Null.
*/
public void erhoehen()
{
wert = (wert + 1) % limit;
}
}
Zuletzt bearbeitet von einem Moderator: