Informatiker Board (http://www.informatikerboard.de/board/index.php)
- Themengebiete (http://www.informatikerboard.de/board/board.php?boardid=1)
--- Theoretische Informatik (http://www.informatikerboard.de/board/board.php?boardid=5)
---- Logik (http://www.informatikerboard.de/board/board.php?boardid=16)
----- Bitte um Code-Überprüfung :-) (http://www.informatikerboard.de/board/thread.php?threadid=2670)


Geschrieben von Java_Beginner am 07.12.2015 um 04:33:

  Bitte um Code-Überprüfung :-)

Meine Frage:
Hallo :-)

Ich habe eine Aufgabe und den Code dazu geschrieben. Seid bitte so nett und werft einen Blick darauf, wo was verbessert werden könnte :-)

Vielen Dank.

Meine Ideen:
Die Aufgabe:

Erstellen Sie für eine Digitaluhr eine Klasse Zeit, welche Uhrzeiten in der Form ss:mm repräsentiert. Gültige Zeiten liegen zwischen 00:00 Uhr und 23:59 Uhr. Die Klasse Zeit soll eine Funktion print() besitzen, welche eine Zeit beispielsweise in der Form 07:05 ausgibt. (Und zwar genau so, also mit führender Null.) Weiterhin besitzt die Klasse Zeit einen Konstruktor, mit dem eine Initialisierung einer Zeit unter Angabe der Stunden und Minuten möglich ist. Wenn beim Anlegen eines Zeit-Objektes kei-ne Zeit angegeben wird, soll die Zeit automatisch mit 00:00 initialisiert werden. Wird beim Initialisieren eine ungültige Uhrzeit angegeben (also z.B 24:30 Uhr oder 3:67 Uhr) soll der Konstruktor die Zeit auf 00:00 setzten und eine entsprechende Fehlermeldung erzeugen. Testen nicht vergessen!


Mein Code:

code:
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:
48:
49:
50:
51:
52:
53:
54:

package zeittest;

public class ZeitTest 
{
    public static void main(String[] args) 
    {
        Zeit t = new Zeit ("1","33");
        t.print();
    }
}


class Zeit 
{
    private String stunde1;
    private String minute1; 
    
    public Zeit ()
    {
        stunde1="00";
        minute1="00";
    }
    
    public Zeit (String stunde, String minute)
    {
        stunde1 = stunde;
        minute1 = minute; 
        
        if (Integer.valueOf(stunde)>23 || Integer.valueOf(stunde)<0 )
        {
            stunde1="00";
            minute1="00";
        }
        else if (Integer.valueOf(minute)>59 || Integer.valueOf(minute)<0)
        {
            stunde1="00";
            minute1="00";
        }
        else if (Integer.valueOf(stunde)>=0 && Integer.valueOf(stunde)<10) 
        {
            stunde1= "0" + stunde; 
        }
    }

    
    public void print ()
    {
        System.out.println(stunde1 + ":" + minute1);
    }
}




Geschrieben von eulerscheZahl am 07.12.2015 um 06:23:

 

Prinzipiell möglich. Ich hätte die Stunden und Minuten als int gespeichert - auch im Hinblick auf mögliche Rechnungen.
Die Ausgabe geht dann mit
code:
1:
System.out.println(String.format("%02d:%02d", stunden, minunten));

Dadurch kriegst du auch führende Nullen.



Geschrieben von Java_Beginner am 07.12.2015 um 06:33:

 

Vielen Dank. Ich hatte zu Beginn Integer anstatt Strings, dann aber das Problem mit der führenden Null.


Forensoftware: Burning Board, entwickelt von WoltLab GmbH