Zum Inhalt springen

Bitte um Hilfe bei Programmieraufgabe


Empfohlene Beiträge

Geschrieben

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.

Geschrieben

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.

Geschrieben

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.

Geschrieben

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.

Geschrieben

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.

Geschrieben


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());

}

Geschrieben

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 :-/.

Geschrieben

Ist mein Gedanke richtig, dass getSekSeitMitternacht(); nur die Methode ausführt und System.out.println(getSekSeitMitternacht()); nur die Ausgabe des Returnwerts liefert?

Geschrieben

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.

Geschrieben

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();

  • 2 Wochen später...

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...