2011-07-06 50 views
2

首先,任何幫助,人們可以提供非常感謝!問題與if語句查詢,日食說「死代碼」

好的,所以我在這裏有這個循環,而且我似乎對if語句有問題。

Eclipse是告訴我,下面的查詢和代碼中的「其他」的部分是「死代碼」:

|| calDateOfDay.DAY_OF_WEEK == Calendar.SUNDAY 

但我不知道爲什麼。

此外,它執行時,它總是執行「if」語句內的代碼,這(我的理解)意味着每一天都是一個星期六。不過,我知道一個事實,那就是日子有正確的價值(肯定有不被星期六檢查的日子)。我知道這是因爲我已經通過Eclipse中的代碼進行了調試,逐一檢查了這些日子的值。

老實說,我很困惑,甚至試圖解釋它! :S

我想什麼代碼做的是:每一天,它會

  1. 採取(一個月的價值,取決於不同的月份OBV),並檢查是否當天是星期六或星期天。
  2. 如果是星期六或星期天,那麼我希望它將週末的「類型」設置爲週末,如果不是,我希望它將日期的「類型」設置爲週日。

基本上就是這樣。

 for (DayEntry dayEntry : daySet){ 

      //day value to be filled 
      Day day = new Day(); 
      Calendar calDateOfDay = new GregorianCalendar(); 
      //set the date of the day 
      calDateOfDay.setTime(dayEntry.getDateOfDay()); 
      day.setDate(calDateOfDay); 

      //set the hours of the day 
      day.setWorkHours(dayEntry.getHours()); 

      if (Calendar.DAY_OF_WEEK == Calendar.SATURDAY || Calendar.DAY_OF_WEEK == Calendar.SUNDAY){ 

       day.setType(DayType.WEEK_END); 

      }else{ 

       day.setType(DayType.WEEK_DAY); 

      } 


      //add the day to the week 
      week.addDay(day); 

     } 

現在,我已經寫了上面的方法的代碼的原因是因爲當我它寫在下面,Eclipse的告訴我,我應該在一個靜態的方式來訪問靜態變量DAY_OF_WEEK,所以我米也不知道這是否造成問題。

 for (DayEntry dayEntry : daySet){ 

      //day value to be filled 
      Day day = new Day(); 
      Calendar calDateOfDay = new GregorianCalendar(); 
      //set the date of the day 
      calDateOfDay.setTime(dayEntry.getDateOfDay()); 
      day.setDate(calDateOfDay); 

      //set the hours of the day 
      day.setWorkHours(dayEntry.getHours()); 

      if (calDateOfDay.DAY_OF_WEEK == Calendar.SATURDAY || calDateOfDay.DAY_OF_WEEK == Calendar.SUNDAY){ 

       day.setType(DayType.WEEK_END); 

      }else{ 

       day.setType(DayType.WEEK_DAY); 

      } 


      //add the day to the week 
      week.addDay(day); 

     } 

回答

7

DAY_OF_WEEK是一個常量,其中包含字段編號爲的星期幾。您的代碼使用它,就好像它包含該字段的,但它不包含該字段。

要修復代碼,只需將calDateOfDay.DAY_OF_WEEK替換爲calDateOfDay.get(Calendar.DAY_OF_WEEK)即可。

0
|| calDateOfDay.DAY_OF_WEEK == Calendar.SUNDAY 

這意味着布爾聲明的第一部分是由編譯器評估爲總是如此。

+1

是的,OP理解並問同樣的事情 – Premraj

1

Calendar.DAY_OF_WEEK是一個靜態變量,它存儲一個整數,該整數引用日曆實例中某個字段的整數,該實例包含一週中的哪一天。您想要做的是calDateOfDay.get(Calendar.DAY_OF_WEEK)