2011-07-06 29 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)