Hilfe bei Übungsaufgabe

JamesJameson

Neues Mitglied
Hallo zusammen,

ich habe kürzlich mein Studium begonnen und stehe in Java gerade vor folgender Übung:


Die Objekte der öffentlichen Klasse Time24 dienen zur Darstellung von Uhrzeiten im 24-Stunden-Format.

Die Klasse besitzt die privaten Attribute
hour und minute , die beide vom Typ int sind.

Die Klasse hat drei öffentliche Konstruktoren

den allgemeinen Konstruktor, der zwei Argumente vom Typ int hat, mit deren Werten die Attribute initialisiert werden,

den Standardkonstruktor, der die beiden Attribute mit dem Wert 0 initialisiert,

und einen so genannten Kopierkonstruktor, der als Parameter ein Objekt vom Typ Time24 hat. Die Attribute des neu erzeugten Objekts werden mit den Attributwerten des Parameter-Objekts initialisiert.

Die Klasse hat die folgenden öffentlichen Methoden:

Die Methode readTime()liest die Attributwerte eines Time24-Objekts ein. Sie verwendet dazu die Klassenmethode readInt() der Klasse TastaturEingabe .

Die Methode writeTime() gibt ein Time24-Objekt in der Form <Stunde> : <Minute> aus, also z.B. 12:15 .

Die Methode addTime() hat ein Argument vom Typ int, welches immer >= 0 sei und ein Zeitintervall, angegeben in Minuten, darstellt. Dieses Zeitintervall wird zur aktuellen Uhrzeit hinzu addiert.

Zum lesenden bzw. schreibenden Zugriff auf die Attributwerte dienen die Methoden getHour() und setHour() sowie getMinute() und setMinute().

Die parameterlose Methode toString() erzeugt aus dem Time24-Objekt eine Zeichenkette der Form "<Stunde>:<Minute>", also z.B. "12:15", und liefert diese Zeichenkette als Rückgabewert.

Die Konstruktoren und alle Methoden, welche die Attributwerte verändern, also insbesondere auch readTime() und addTime(), müssen sicherstellen, dass die Werte der Attribute hour und minute in den Bereichen 0 bis 23 bzw. 0 bis 59 liegen. Dazu ist es eventuell nötig, die Attributwerte entsprechend anzupassen; dieser Prozess wird als Normalisierung bezeichnet und hier von
der privaten parameterlosen Methode normalizeTime() übernommen.

Bei der Implementierung der Methode normalizeTime() sind die Operatoren / (ganzzahlige Division) und % (Rest bei der ganzzahligen Division) nützlich.

a) Implementieren (d.h., schreiben) Sie die Klasse Time24 in Java. Gehen Sie der Einfachheit halber davon aus, dass die Attribute hour und minute keine negativen Werte annehmen.

b) Schreiben Sie eine Methode main() für die Klasse Time24.
Legen Sie zunächst drei Referenzen sanfrancisco, frankfurt und melbourne auf Time24-Objekte an.
Erzeugen Sie ein Time24-Objekt für San Francisco und lesen Sie die aktuelle Uhrzeit in San Francisco ein.
Erzeugen Sie Time24-Objekte für die Uhrzeit in Frankfurt (+ 9 Stunden) und Melbourne (+ 17 Stunden).
Geben Sie die drei Uhrzeiten aus.



Die arbeit der letzten 5 Std. sieht bei mir so aus:

Java:
package utilities;

import utilities.TastaturEingabe;

public class Time24{
	 
	 private int hour,minute;
	 
	 public Time24 (int hour, int minute) {
	  
	  this.hour = hour;
	  this.minute = minute;
	 }
	 public Time24(){
	   hour = 0;
	   minute = 0;
	 }
	 public Time24(Time24 time24){
	  
	  this.hour = time24.hour;
	  this.minute = time24.minute;
	 }
	 public void readTime(){
		 utilities.TastaturEingabe.readInt(null);
	 }
	 public void writeTime(){
		 System.out.println(hour + ":" + minute);
	 }
	 public void addTime(){
	 }
	 public String toString(){
		return null;
	 }


Ich komme bereits bei der readTime()-Methode nicht mehr weiter.

Ich hoffe jetzt das meine bitte nicht unverschämt ist, da ich nicht weiß wie groß der Zeitaufwand für Profis ist, aber ich brauche eine Lösung für die Aufgabe.

Falls also jemand gerade Zeit hat wär es super wenn er/sie es sich mal angucken könnte.

MfG

JJ
 
Was steht denn in der Doku, was utilities.TastaturEingabe.readInt(null); genau macht? Warum übergibst du null, was wird da erwartet? Ein String?
 
toString soll dazu da sein die int-werte von hour und minute auszugeben ( z.B 12:30 ).

Die return- Anweisung ist nur platzhalter weil Eclipse gemeckert hat. Das gilt auch für utilities.TastaturEingabe.readInt(null); (nur für null)

Das ist die Klasse TastaturEingabe:

Java:
public class TastaturEingabe
{
   static BufferedReader eing =
      new BufferedReader(new InputStreamReader (System.in));

   public static int readInt (String prompt)
   {
      while (true)
      {
         System.out.print(prompt);
         try
         {
            String zeile = eing.readLine();
            return Integer.parseInt(zeile);
         }
         catch (NumberFormatException e)
         {
            System.out.println ("Bitte eine ganze Zahl eingeben.");
         }
         catch (IOException e)
         {
            e.printStackTrace();
            System.exit(1);
         }
      }
   }

TastaturEingabe.readInt(); soll die int-Werte (hour, minute) vom Time24-Objekt einlesen.
 
Zuletzt bearbeitet:
Okay, dann macht die Übergabe von null aber wenig Sinn. Du solltest schon ne Sinnvolle Nachricht übergeben.
Generell musst du den Nutzer nach 2 ints Fragen, einmal Stunde und einmal Minute.
 
Hey,

also das ist ja komisch, hab gerade die selbe Aufgabe vor mir, du studierst nicht rein zufällig in Trier oder ?! 😉

Ne lösung zu der Aufgabe wär wirklich super, häng da gerade auch total und abgabe ist ja schon am Mittwoch ne 😀
 
Ist doch eigentlich recht simpel. Die Methode nimmt einen String entgegen, der dann ausgegeben wird. Dann gibt die Methode einen int zurück, der vom Benutzer eingelesen wird.
Ihr braucht 2 ints (minuten und stunden).
 

Zurück
Oben