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-Key: 507685

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

Printed on: May 28, 2024 at 07:05 o'clock

Mitglied: 141016
141016 Oct 23, 2019 at 07:35:36 (UTC)
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?
Member: SlainteMhath
SlainteMhath Oct 23, 2019 at 07:45:22 (UTC)
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
Mitglied: 141016
141016 Oct 23, 2019 at 07:50:01 (UTC)
Goto Top
danke
Mitglied: 141016
141016 Oct 23, 2019 at 09:56:24 (UTC)
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
Member: SlainteMhath
SlainteMhath Oct 23, 2019 at 10:10:10 (UTC)
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...
Mitglied: 141016
141016 Oct 23, 2019 at 10:15:18 (UTC)
Goto Top
wie denn dann :o
Member: maretz
maretz Oct 23, 2019 at 18:58:05 (UTC)
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...