打卡时钟While循环故障

时间:2018-08-16 02:54:33

标签: java while-loop

我正在尝试以此创建自己的计时器,并希望使用该计时器制作打孔时钟,但是我的循环未在重复(时间: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;

                    }






            }

        }

}

1 个答案:

答案 0 :(得分:0)

直到输入两个数字才开始循环的原因是,由于扫描器的下一行功能在收到值之前一直在使用块,因为您有两个下一行调用,因此需要两个值才能继续循环。 / p>

如果不阻塞,循环可能会发生得如此之快,以至于您无法键入句子,因为在循环迭代运行时,您可能只键入了一个字母。

如果希望使用此函数,则需要对程序进行多线程处理,以便while循环在主线程上运行,下一行函数运行第二个线程,当第二个线程接收到所要查找的内容时,它将通知第一个线程线程。