141016
Goto Top

Java: Zählschleife - Consolen Digital Uhr schreiben

Hallo,

die gestellte Aufgabe ist eine Consolenanwendung zu schreiben die wie folgt aussieht:
unbenannt

Content-ID: 507685

Url: https://administrator.de/contentid/507685

Ausgedruckt am: 21.11.2024 um 20:11 Uhr

141016
141016 23.10.2019 um 09:35:36 Uhr
Goto Top
ups - zu früh gesendet :D

Hat jemand einen Vorschlag wie man da ran gehen könnte?
bin Planlos.. für die Ausgabe würde ich eine for-Schleife benutzen.. mehr weiss ich aber nicht.

Wie bekomme ich eine Schleife dazu, eine Ausgabe jede Sekunde zu machen?
Wie bekomme ich dann die Begrenzung von 60 sekunden bzw minuten hin und den Umschwung von 59 sekunde zu +1 minute?
SlainteMhath
SlainteMhath 23.10.2019 um 09:45:22 Uhr
Goto Top
Hey, du schon wieder face-smile

Hat jemand einen Vorschlag wie man da ran gehen könnte?
Pseudo code:

Start
sekunde++
wenn sekunde = 60: minute +1, sekunde=0
wenn minute = 60: Stunde +1, minute=0
print stunde, minute, sekunde
warte 1 sec
gehe zu start
141016
141016 23.10.2019 um 09:50:01 Uhr
Goto Top
danke
141016
141016 23.10.2019 um 11:56:24 Uhr
Goto Top
package uhr;

import java.util.concurrent.TimeUnit;

public class Uhr {
public static void main(String args) throws InterruptedException {

int h=0;
int m=0;
int s=0;

for(int i=0; i < 60; i++) {

s++;
System.out.println(h+":"+m+":"+s);
TimeUnit.SECONDS.sleep(1);

if(s == 60)
{
s = 0;
m++;
}
else if(m == 60)
{
s = 0;
m = 0;
h++;
}
else {
System.out.print("");
}
}

}
}


läuft
SlainteMhath
SlainteMhath 23.10.2019 um 12:10:10 Uhr
Goto Top
TimeUnit.SECONDS.sleep(1);
Das sollte so nicht gemacht werden, sondern mit einer Verzögerungsschleife...

if(s == 60)
...
else if(m == 60)

Das fliegt dir beim nächsten Durchlauf nach 0:59:59 um die Ohren...
141016
141016 23.10.2019 um 12:15:18 Uhr
Goto Top
wie denn dann :o
maretz
maretz 23.10.2019 um 20:58:05 Uhr
Goto Top
lösen würde ich das ganze per threads - dann hätte ich thread.sleep... und wenn du da etwas kreativ bist:
int i = 0;
while (true)
{
try {
i++;
thread.sleep(100);
}
if (i==10) {
system.out.println(„deine sekunde is um“);
i=0;
}
}

ganz grob... Idee is damit du die aufgabe erfüllst - lass halt in ner schleife das hochzählen -> erfüllt. Aber durch das sleep(100) hast du ne pause von 100ms drin -> somit hast du alle 10 durchläufe 1 sek erledigt. Kannst natürlich auch mit 500 und 2 durchläufen machen...