2013-01-02 204 views
-3

可能重複:
How do I compare strings in Java?
java == vs equals() confusionJava if語句未執行。

所以,我試圖開發同時我進入打開一個JDialog的應用程序。它只需要精確到秒。

public void run() { 

    SimpleDateFormat sdf = new SimpleDateFormat("HH:mm"); 
    timeset = "16:37"; 

    while(true){ 

    System.out.println("thread sleep"); 
    try{Thread.currentThread().sleep(1000);}catch(InterruptedException ie){} 

    Calendar cal = Calendar.getInstance(); 
    cal.getTime(); 
    temptime = sdf.format(cal.getTime());  
    System.out.println("realtime = " + realtime); 
    System.out.println("timeset = " + timeset); 

    if(realtime == timeset){ 

     System.out.println("if statement activated"); 
     Alert.man(); 
     break; 

    } 

所以,我的問題是,當我運行,如果當timeset和實時都是平等的,我只是無法弄清楚語句不運行該程序。這是怎麼回事?

+0

注意指針VS值的比較是一個很基本的概念(大多數語言),如果你想成爲一名程序員,你需要「搞定」。它不僅適用於字符串。 –

+0

我現在開始「得到」它。我剛剛開始編寫代碼,所以我一直在學習新的東西,而這只是其中之一。 –

回答

6

使用equals()方法來檢查,如果兩個日期都是平等的。 ==運算符只檢查兩個引用是否指向同一個實例。

if(realtime == timeset){ 

應該

if(realtime.equals(timeset)){ 
+1

比較應該考慮到,您可能無法在那一秒完全比較。睡眠時間爲一秒鐘,一個人可以有足夠的變化從一個週期到下一個錯過一秒鐘。 –

+0

非常感謝,修復它。對於模糊的問題抱歉,我發現很難將我的想法轉化爲標題。 –

+0

@HotLicks真的,我完全與你的說法.. – PermGenError