2016-10-11 10 views
1

私はプログラミングが新しく、私は現在オブジェクト指向の全体像を学んでいます。私は私のカレンダーオブジェクトを更新する方法についてはうんざりです。カレンダーを更新するために私の更新メソッドに何が必要なのかよく分かりません。以下は私が使っている2つのクラスです。カレンダーを更新する

public class Time { 
    private int hour; 
    private int minute; 
    private int second; 
    Calendar cal = Calendar.getInstance(); 

    public Time(){ 
     Calendar cal = Calendar.getInstance(); 
     this.hour = cal.get(Calendar.HOUR_OF_DAY); 
     this.minute = cal.get(Calendar.MINUTE); 
     this.second = cal.get(Calendar.SECOND); 
    } 
    public int getHour(){ 
     return this.hour; 
    } 
    public int getMinute(){ 
     return this.minute; 
    } 
    public int getSecond(){ 
     return this.second; 
    } 
    public String toString(){ 
     return this.hour + ":" + this.minute + ":" + this.second; 
    } 
    public void update(){ 
     cal.setTime(new Date());  
    } 
} 

そしてここでは、私のメインクラスです:

public class Exercise2b { 
    public void demo() { 
     String message1, message2; 
     int hour, minute, second; 
     Time dt = new Time(); 
     hour = dt.getHour(); 
     minute = dt.getMinute(); 
     second = dt.getSecond(); 
     message1 = "Klockan är " + minute + " minuter över " + hour + " (+" + second + " sekunder)"; 
     message2 = dt.toString(); 
     JOptionPane.showMessageDialog(null, message1); 
     JOptionPane.showMessageDialog(null, message2); 
     dt.update(); 
     message2 = dt.toString(); 
     JOptionPane.showMessageDialog(null, message2); 
    } 

    public static void main(String[] args) { 
     Exercise2b prog = new Exercise2b(); 
     prog.demo();  
     } 
    } 

任意の助けいただければ幸いです!

+0

あなたはカレンダーを更新するために何かをしようとしましたか?オンラインでサンプルを検索しましたか? – nhouser9

+0

'Calendar'を余儀なくされなければ、代わりに新しい' java.time' APIを使います。 – Kayaman

答えて

1

更新機能では、calのインスタンスのみを更新しています。時分秒と秒変数も更新する必要があります。あなたはこのようにすることができます。

public void update(){ 
    cal.setTime(new Date()); 
    this.hour = cal.get(Calendar.HOUR_OF_DAY); 
    this.minute = cal.get(Calendar.MINUTE); 
    this.second = cal.get(Calendar.SECOND); 
} 

あなたがのThread.sleepを(使用できる時間差を取得するために)

import javax.swing.*; 
public class Exercise2b { 
public void demo() { 
    String message1, message2; 
    int hour, minute, second; 
    Time dt = new Time(); 
    hour = dt.getHour(); 
    minute = dt.getMinute(); 
    second = dt.getSecond(); 
    message1 = "Klockan är" +minute+"minuter över"+hour+"(+"+second+"sekunder)"; 
    message2 = dt.toString(); 
    JOptionPane.showMessageDialog(null, message1); 
    JOptionPane.showMessageDialog(null, message2); 

    try 
    { 
     Thread.sleep(5000); 
    } 
    catch(Exception e) 
    { 
     System.out.println("Exception Occured"); 
    } 

    dt.update(); 

    message2 = dt.toString(); 
    JOptionPane.showMessageDialog(null, message2); 

} 

public static void main(String[] args) { 
    Exercise2b prog = new Exercise2b(); 
    prog.demo();  
    } 
} 
+0

それはうまくいった。ありがとう! – Bengan

+0

@Bengan答えが正しいと感じるのに役立ちます – georoot

関連する問題