Skylark Geschrieben 9. Juni 2013 Teilen Geschrieben 9. Juni 2013 Ich hänge seit ca. 3 Stunden an einer Aufgabe und schätze mal, ich sitze noch den ganzen Sonntag, wenn ich keine Hilfe bekomme. Aufgabe: Codieren Sie in der Uhrzeit-Klasse eine Businessmethode (Keine Ahnung, was hier mit Business gemeint ist. Ich kenne nur normale Methoden getSekSeitMitternacht(); die die gespeicherte Uhrzeit als Anzahl der Sekunden seit Mitternacht zurückgibt; wenn eine Instanz z.B. die Uhrzeit 03:10:28 enthält, müsste die Methode den Wert 11428 liefern. Codieren Sie außerdem die "entgegengesetzte Methode setSekSeitMitternacht(); der eine Sekundenzahl übergeben wird und die diese Anzahl in Stunden, Minuten und Sekunden umrechnet. Für diese Aufgabe sind keine weiteren Membervariablen anzulegen! Hier mein Quellcode: package Uhrzeit; public class Uhrzeit { private int stunde; private int minute; private int sekunde; public void setStunde (int std) { if(std<0) std=0; else if(std>23) std=23; stunde=std; } public int getStunde() { return stunde; } public void setMinute (int min) { if(min<0) min=0; else if(min>59) min=59; minute=min; } public int getMinute() { return minute; } public void setSekunde (int sek) { if(sek<0) sek=0; else if(sek>59) sek=59; sekunde=sek; } public int getSekunde() { return sekunde; } public void display() { System.out.println("Uhrzeit: "+ stunde + ":" + minute + ":" + sekunde); } public Uhrzeit() { } //Übung Seos 7.Juni //Aufgabe 1 Blatt 7 public Uhrzeit(int std, int min, int sek) { setStunde(std); setMinute (min); setSekunde (sek); } public Uhrzeit(int std) { setStunde (std); } //Übung Seos 7.Juni //Aufgabe 2 Blatt 7 public void setSekSeitMitternacht(int std, int min, int sek) { std = sek /60 /60 %24; min= sek /60 %60; sek = sek %60; stunde = std; minute = min; sekunde = sek; } public int getSekSeitMitternacht(int std, int min, int sek) { int sekm; sekm = (std * 60 * 60) + (min * 60) + sek; setSekunde(sekm); return sekunde; } public void sekSeitMitternachtAusgabe() { System.out.println("Sekunden seit Mitternacht: " + sekunde); } } Hier die Main Methode (Enthält zusätzlich noch Ausgaben und Werte vorheriger Aufgaben): package Uhrzeit; public class UhrzeitTest { public static void main(String[] args) { Uhrzeit u = new Uhrzeit(); u.setStunde (2); u.setMinute (23); u.setSekunde (48); u.display(); Uhrzeit u2 = new Uhrzeit(11,20,45); u2.display(); Uhrzeit u3 = new Uhrzeit(18); u3.display(); Problem: Uhrzeit u4 = new Uhrzeit(3,10,28); u4.display(); <-Ausgabe ist so Korrekt, da ja über die Uhrzeit Instanz ein Wert gegeben werden soll. u4.sekSeitMitternachtAusgabe(); Ich probiere wie gesagt seit geschlagenen 3 Stunden es hinzubekommen, dass er mir 11428 Sekunden ausgibt. Er gibt mit aber immer nur die 28 aus. Die 11428 bekomme ich nur raus, wenn ich die Uhrzeit direkt als Werte bei der getSekSeitMitternacht() eingebe. So ist das aber nicht gefragt gewesen. Bin hier noch am Verzweifeln. Mit return sekunde; in der Methode, sollte er mir doch die neu Berechnete Zahl in sekunde schreiben, er belässt diese aber bei 28. Und wie genau ich nun in setSekSeitMitternacht() eine komplette Sekundenanzahl eingeben soll ist mir auch ein Rätsel, da ich ja keine neuen membervariablen erstellen darf. Ich würde jetzt einfach die errechnete Sekundenzahl aus Methode 1 in die 2 übernehmen. Keine Ahnung, ob das vom Fragesteller so gedacht ist. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
lupo49 Geschrieben 9. Juni 2013 Teilen Geschrieben 9. Juni 2013 Deine Umrechnung von der übergebenen Zeit in setSekSeitMitternacht(...) in Sekunden stimmt nicht. Mit der Berechnung wandelt man Sekunden in Stunden und Minuten um. Außerdem wird die Methode setSekSeitMitternacht(..) nicht aufgerufen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Skylark Geschrieben 9. Juni 2013 Autor Teilen Geschrieben 9. Juni 2013 Die setSekSeitMitternacht soll ja auch Sekunden in Stunden, Minuten und Sekunden wandeln. So weit bin ich noch gar nicht, weil ich eben noch mit getSetSeitMitternacht beschäftigt bin. Ich weiß nicht, wie ich das Ergebnis korrekt ausgeben kann bzw. was da nicht stimmt. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Skylark Geschrieben 9. Juni 2013 Autor Teilen Geschrieben 9. Juni 2013 Ich weiß nicht, wie ich das Ergebnis korrekt ausgeben kann bzw. was da nicht stimmt. Ich weiß inzwischen schon nicht mehr, wo ich wie eine Methode aufrufen muss/soll. Habe ein solches Durcheinander im Kopf, dass ich nicht mal mehr vernünftige Variablen bilden kann. Ich hab absolut keinen Durchblick mehr. Inzwischen sinds schon 4 Stunden und ich bin noch keinen Schritt weiter. Was genau muss ich machen, um die Sekundenanzahl der eingegebenen Zahlen der Uhrzeitinstanz korrekt auszugeben? Uhrzeit u4 = new Uhrzeit(3,10,28); u4.display(); Ausgabe: Uhrzeit: 3:10:28 public int getSekSeitMitternacht(int std, int min, int sek) { int sekm; sekm = (std * 60 * 60) + (min * 60) + sek; setSekunde(sekm); return sekunde; } Wohin muss ich diese Methode einbinden bzw. wie gebe ich diese aus? Die Methode übernimmt ja praktisch die 3:10:28. In die Methode selbst soll ich ja keine Zahlen eingeben. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Skylark Geschrieben 9. Juni 2013 Autor Teilen Geschrieben 9. Juni 2013 Gerade eben habe ich zusätzlich festgestellt, dass er mir die Sekunden auch jedes mal auf maximal 59 setzt. Es kommt zwar 11428 raus, aber er wandelt ja oben auf 59 um. Wenn ich also keine neuen Membervariablen erstellen darf und die get Methode von den Zahlen der Instanz einen Wert liefern soll, wie also soll ich eine 5 stellige Zahl ausgeben lassen, wenn oben in setSekunde auf 59 gewandelt wird? Siehe: public int getSekSeitMitternacht() { int sekm; sekm = (stunde * 60 * 60) + (minute * 60) + sekunde; setSekunde(sekm); return sekunde; Uhrzeit u4 = new Uhrzeit(3,10,28); u4.display(); u4.getSekSeitMitternacht(); u4.sekSeitMitternachtAusgabe(); Ich geb es jetzt auf, keine Ahnung, wie diese Aufgabe zu lösen ist. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Schiller256 Geschrieben 9. Juni 2013 Teilen Geschrieben 9. Juni 2013 public int getSekSeitMitternacht(int std, int min, int sek){ int sekm; sekm = (std * 60 * 60) + (min * 60) + sek; setSekunde(sekm); return sekunde; } Deine setSekunde Methode kann nie größer als 59 werden. Ausserdem brauchst du deine Member Variablen auch überhaupt nicht zu verändern. Denn wenn du eine Instanz erzeigst gibst du doch bereits alles mit was du brauchst. Auf diesen Member Variablen kannst du nun los rechnen. Indem du einfach alles in Sekunden umrechnest und dann zusammen addierst und zurück lieferst. public int getSekSeitMitternacht(){ //umrechnen der Stunden in Sekunden 3600 ist 1 Std. in Sekunden int stdInSec = getStunde() * 3600; //umrechnen der Minuten in Sekunden int minInSec = getMinute() * 60; //alle drei Sekunden angebane zusammen addieren und ausgeben return stdInSec + minInSec + getSekunde(); } public static void main(String[] args) { Uhrzeit uhrzeit = new Uhrzeit(3, 10, 28); System.out.println(uhrzeit.getSekSeitMitternacht()); } Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Skylark Geschrieben 9. Juni 2013 Autor Teilen Geschrieben 9. Juni 2013 Super, vielen Dank. Da wär ich in tausend Jahren nicht drauf gekommen, da mir gar nicht bewußt war, wie ich die Ausgabe richtig zu schreiben habe. Ich dachte die Ganze Zeit, da muss irgend ne Variable drin stehen, auf die in meiner Version aber niemand zugreifen konnte, da sie ja in der Methode stand. Ich hab das jetzt so gelöst (Die Verwendung der Membervariablen in dieser Methode sollte ja kein Problem sein? Ist ja im Prinzip das Gleiche wie z.B. getStunde()): public int getSekSeitMitternacht() { int gesamtsekunden; int stdInSek=stunde * 60 *60; int minInSek=minute *60; int sekInSek=sekunde; gesamtsekunden= stdInSek + minInSek + sekInSek; return gesamtsekunden; } public void sekSeitMitternachtAusgabe() { System.out.println("Sekunden seit Mitternacht: " + getSekSeitMitternacht()); } Die rot geschriebenen Stellen waren mir so nicht klar. Ich dachte der Return Wert funktioniert nur, wenn man die Gegebenen Membervariablen verwendet. Also bsp: sekunde=sek; und return sekunde; = Gib den neuen Wert an die Membervariable über. Ich hab auch gerade keinen Schimmer, was der Befehl return gesamtsekunden eigentlich bewirkt. Wohin genau wird dieser Returnwert geschrieben? Return bedeutet ja nicht System.out.println und die Variable gesamtsekunden ist ja schon belegt. Ich stelle gerade fest, dass ich das ganze Prinzip des Returnwerts nicht verstanden habe :-/. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Skylark Geschrieben 9. Juni 2013 Autor Teilen Geschrieben 9. Juni 2013 Ist mein Gedanke richtig, dass getSekSeitMitternacht(); nur die Methode ausführt und System.out.println(getSekSeitMitternacht()); nur die Ausgabe des Returnwerts liefert? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Skylark Geschrieben 9. Juni 2013 Autor Teilen Geschrieben 9. Juni 2013 Und schon hänge ich wieder und zwar bei der zweiten Methode: Codieren Sie außerdem die "entgegengesetzte Methode setSekSeitMitternacht(); der eine Sekundenzahl übergeben wird und die diese Anzahl in Stunden, Minuten und Sekunden umrechnet. Für diese Aufgabe sind keine weiteren Membervariablen anzulegen! Wie kann ich dieser Methode eine 5-Stellige Sekundenanzahl übergeben, wenn ich keine weiteren Membervariablen erstellen darf? Die Sekundenvergabe erfolgt ja über die Uhrzeit Instanz und die ist nun mal nur über stunde, minute und sekunde zu belegen, welche alle auf jeweils zweistelligen Zahlen zurückgesetzt werden. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Skylark Geschrieben 9. Juni 2013 Autor Teilen Geschrieben 9. Juni 2013 Ich glaube ich habs: public void setSekSeitMitternacht(int seku) { int std; int min; int sek; std = seku /60 /60 %24; min= seku /60 %60; sek = seku %60; stunde=std; minute=min; sekunde=sek; } inMain: Uhrzeit u5 = new Uhrzeit(); u5.setSekSeitMitternacht(11428); u5.display(); Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
flashpixx Geschrieben 9. Juni 2013 Teilen Geschrieben 9. Juni 2013 @Skylark: Verwende bitte die Code-Tags damit Dein Code überhaupt im Forum sinnvoll lesbar und sich vom übrigen Text unterscheiden lässt !! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Skylark Geschrieben 19. Juni 2013 Autor Teilen Geschrieben 19. Juni 2013 Was ist ein Code-Tag und wie füge ich das ein? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Skylark Geschrieben 19. Juni 2013 Autor Teilen Geschrieben 19. Juni 2013 Hat sich erledigt, habs rausgefunden Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.