Java meine Methode funktioniert nicht so wie ich es will! Aber warum?

... komplette Frage anzeigen

4 Antworten

Du hast in deiner Funktion keine Schleife, wahrscheinlich wirst du (in der Funktion oder ausserhalb) auch Threads brauchen, damit deine Anwendung nicht stundenlang blockiert. Und deine Variablennamen sind hochgradig unglücklich gewählt - was ist "mshour"? Eine Millisekundenstunde?

Ich würde das ganze Problem mit dem Datetime-Objekt lösen, anstatt mit zig Integern rumzuhantieren.

https://docs.oracle.com/javase/tutorial/datetime/iso/datetime.html

Und wenn es ein naiver Ansatz sein soll, dann würde ich die Stunden am Anfang der Funktion in Millisekunden umrechnen und dann in der Funktion in Millisekunden rechnen und auch immer diese Millisekunden an sleep() übergeben. Mit beispielsweise 

if (milliseconds > 60 * 60 * 1000)

kannst du feststellen, ob die Zeit noch größer als eine Stunde ist.

Antwort bewerten Vielen Dank für Deine Bewertung

Wie kann der Code überhaupt kompilieren? Du greifst doch in den If Abfragen auf Variablen zu die nur auf dem Stack, also in einer If Abfrage gültig sind?
Außerdem solltest du in Anwendungen die nicht mit Multithreading arbeiten definitiv auf Sleepfunktionen verzichten

Antwort bewerten Vielen Dank für Deine Bewertung

 Aber es geht nicht! 

Was genau geht nicht ?

Was man nur sofort sieht: Du deklarierst

int mhour = 59;

innerhalb einer If-Bedingung. Entsprechend steht dir die Variable

außerhalb

nicht zur Verfügung.

dasselbe gilt für shour

Davon abgesehen wartet dein Code ständig dank Thread.sleep. Ist das wirklich das, was du in deinem Code machen willst?

Bitte sprich dein Problem konkret an.

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von Emanuel2003
18.07.2016, 15:18

Also man gibt an wie lange Hour sein soll. Dann zählt er herunter auf Hour 0 (in stunden) wenn er bei Hour == 0 angekommen ist dann soll er in Minuten herunterzählen und wenn Minute == 0 ist dann soll er in Sekunden herunterzählen, und wenn Sekunden == 0 ist dann soll er in Millisekunden herunterzählen! Und wenn Millisekunde == 0 ist dann soll er System.out.println("Der Countdown ist zu ende!").

Aber Wenn er bei hour == 0 ist dann giebt er 
System.out.println("Der Countdown ist zu ende!") aus!

Und das will ich nicht!

0

Ja wie wärd mit nem loop? XDD

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von Emanuel2003
18.07.2016, 15:30

Hab noch nie mit loops gearbeitet. Wie geht das?

0

Was möchtest Du wissen?