注册 登录
编程论坛 JAVA论坛

电子时钟的输入问题

宁缺T 发布于 2019-11-03 11:49, 2812 次点击
这个简单的时钟功能我已经基本实现,但是
1.在输入过程中的nextInt(),好像只能输入hour其他的就无法输入了。
2.在Clock类中的tick方法能把两个if语句之间的{}去掉吗?
程序代码:
package clock;


 class Clock {
    private  Display hour=new Display(24);
    private Display minute=new Display(60);
    private Display second=new Display(60);
    public Clock(int hour,int minute,int second) {
             this.hour.setValue(hour);
             this.hour.setValue(minute);
             this.hour.setValue(second);
    }
    public void tick() {
        while(true) {
            second.increase();
            if(second.getValue()==0) {

                minute.increase();
            if(minute.getValue()==0)

                hour.increase();
            }
        }
    }
    public String toString() {
  

        return String.format("%02d:%02d:02d\n", hour.getValue(),minute.getValue(),second.getValue());
   

    }
    public void start() {
        while(true) {
        minute.increase();
        if(minute.getValue()==0) {
            hour.increase();
        }
        System.out.printf("%02d:%02d\n", hour.getValue(),minute.getValue());
        }
    }
    public static void main(String[] args) {
        Clock clock=new Clock(0,0,0);
        clock.start();

    }

}
程序代码:
package clock;


 class Display {
    private int value=0;
    private int limit=0;
    //private int step=1;
    public Display(int limit) {
        this.limit=limit;
    }
   

    public void increase(){
        value++;
        if(value == limit) {
            value=0;
        }
    }
   

    public void setValue(int a)

    {
        value=a;
    }
   

     public int getValue() {
        return value;
    }
    public static void main(String[] args) {
      

        java.util.Scanner in = new java.util.Scanner(System.in);
        Clock clock = new Clock(in.nextInt(), in.nextInt(), in.nextInt());
        clock.tick();
        System.out.println(clock);
        in.close();
        //Display d=new Display(24);
        
//for( ;; ) {
            
//d.increase();
            
//System.out.println(d.getValue());
        
//}
        
//Display he=new Display(10);
        
//he.step=20;
        
//Display she=new Display(20);
        
//System.out.println(she.step);
        
//System.out.println(he.step);
      

    }
}

5 回复
#2
林月儿2019-11-03 14:54
这个是干嘛的
#3
宁缺T2019-11-03 15:01
回复 2楼 林月儿
这是一个以任意时刻开始的电子时钟(有时,分和秒)。
#4
林月儿2019-11-03 15:40
程序代码:
import java.time.LocalTime;
import java.time.format.DateTimeParseException;
import java.util.Timer;
import java.util.TimerTask;

import javax.swing.JOptionPane;

public class Test2 {
    static LocalTime time;
    public static void main(String[] args) {
        String inputStr=JOptionPane.showInputDialog("请输入时间(HH:mm:ss)");
        try {
            time = LocalTime.parse(inputStr);
            new Timer().schedule(new TimerTask() {
               
                @Override
                public void run() {
                    time=time.plusSeconds(1);
                    System.out.println(time);
                }
            }, 1000, 1000);
        }catch(DateTimeParseException e) {
            System.out.println(e.getMessage());
        }
    }
}
#5
宁缺T2019-11-04 15:46
回复 4楼 林月儿
大佬,您这是自己写了一个,我的问题是在我输入的时候他没个我结果。
#6
林月儿2019-11-04 19:18
不好意思。第一个问题你试着拆开来写呢
1