2012-05-04 18 views
1

我知道這似乎是一個邏輯錯誤,我已對幾次,一切都似乎是正確的,如果有人能指出我朝着正確的方向:如果在Android的Java的一週中statment比較天八方通返回true

我們在特定時間,上午10點,下午4點和晚上11點提供服務。 該服務正常工作,通知已創建。但是,當我們把邏輯比較爲一週中的某一天時,即使它不是有問題的那一天,它也被稱爲每天。

一小段代碼片段:

public void onStart(Intent intent, int startId) { 
    Calendar c = Calendar.getInstance(); 
    int day = c.get(Calendar.DAY_OF_WEEK); 
    int hour = c.get(Calendar.HOUR_OF_DAY); 
    if (day == Calendar.SATURDAY || day == Calendar.WEDNESDAY); //always true 
    { 
     if(hour == 10 || hour == 16) //correct regardless of anterior 
     { 
      //create notification 


     } 
     else if(hora == 23) 
     { 
      //create other type of intent 

     } 
    } 
    super.onStart(intent, startId);  

} 
+0

那麼我如何解決這個問題?我只需要在週六和週三打電話給我...... – Sergio

+3

'if(day == Calendar.SATURDAY || day == Calendar.WEDNESDAY);'不能總是爲真 –

回答

6

,因爲你的if語句

if (day == Calendar.SATURDAY || day == Calendar.WEDNESDAY); 

取下半柱後把半列你沒有得到預期的結果。

+2

+1發現。 – assylias

+0

謝謝assylias – Antony

+1

GZUS CHRIST,我幾乎失去了我的工作,因爲semicollon?你救了我的命! – Sergio

1

其實並非總是如此;分號將if語句與下面的代碼塊分開,使它們獨立。

因此,if語句被評估,然後代碼塊被執行而不依賴if結果來確定它是否應該被執行。

+0

可能看起來像我是一個完全白癡,或初學者,但這些都沒有,我只是缺乏對細節的關注...虐待嘗試讀取分號b4張貼,再次感謝。 – Sergio

相關問題