我正在尝试以此创建自己的计时器,并希望使用该计时器制作打孔时钟,但是我的循环未在重复(时间:0:0),仅在输入两个数字后重复,我可以不知道为什么请帮忙,我以前把Thread.sleep(60000)设置为分钟=分钟+ 1,所以我以分钟速率工作,但删除了它,这样我可以更快地看到结果
import java.util.Scanner;
public class Main {
public static void main(String[] args) throws InterruptedException {
Scanner sc = new Scanner(System.in);
int minute = 0, hour = 0, punchi = 0, puncho = 0, TP, TH = 0, i = 0, o = 0;
int power = 10;
boolean k = true;
String si, so;
while (k == true) {
System.out.println("Time: " + hour + ":" + minute);
k = true;
minute = minute + 30;
k = true;
if (minute == 60) {
hour = hour + 1;
minute = 0;
k = true;
}
else
k = true;
if (hour == 24) {
hour = 0;
k = true;
}
else
k = true;
si = sc.nextLine();
so = sc.nextLine();
if (si == "punchi") {
i = sc.nextInt();}
else
k = true;
i = sc.nextInt();
if (so == "puncho"){
o = sc.nextInt();
}
else
k = true;
if (o > 0) {
TH = (TH + o - i);
o = 0;
i = 0;
System.out.println("Power off?");
power = sc.nextInt();
k = true;}
else
k = true;
if (power == 9) {
TP = TH * 14;
k = false;
System.out.println("your total pay is " + TP); }
else
k = true;
}
}
}
}
答案 0 :(得分:0)
直到输入两个数字才开始循环的原因是,由于扫描器的下一行功能在收到值之前一直在使用块,因为您有两个下一行调用,因此需要两个值才能继续循环。 / p>
如果不阻塞,循环可能会发生得如此之快,以至于您无法键入句子,因为在循环迭代运行时,您可能只键入了一个字母。
如果希望使用此函数,则需要对程序进行多线程处理,以便while循环在主线程上运行,下一行函数运行第二个线程,当第二个线程接收到所要查找的内容时,它将通知第一个线程线程。