【问题标题】:Issue with if statement query, eclipse saying "dead code"if 语句查询出现问题,eclipse 说“死代码”
【发布时间】:2011-07-06 15:46:42
【问题描述】:

首先,非常感谢人们提供的任何帮助!

好的,所以我在这里有这个循环,我似乎遇到了 if 语句的问题。

Eclipse 告诉我下面的查询部分和“else”中的代码是“死代码”:

|| calDateOfDay.DAY_OF_WEEK == Calendar.SUNDAY 

但我不知道为什么。

此外,当它执行时,它总是执行“if”语句中的代码,这(据我的理解)意味着每天都是星期六。但是我知道这些日子有正确的价值(肯定有被检查的日子不是星期六)。我知道这一点,因为我已经通过 Eclipse 中的代码进行了调试,并一一检查了日期的值。

老实说,我什至试图解释它都感到困惑! :S

我希望代码做的是:

  1. 查看它获得的每一天(一个月的价值,因月份而异),并检查这一天是星期六还是星期日。
  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);   

        }

【问题讨论】:

    标签: java date loops calendar if-statement


    【解决方案1】:

    DAY_OF_WEEK 是一个常量,包含星期几的字段编号。您的代码使用它,就好像它包含该字段的 ,但它没有。

    要修复代码,只需将calDateOfDay.DAY_OF_WEEK 替换为calDateOfDay.get(Calendar.DAY_OF_WEEK)

    【讨论】:

      【解决方案2】:

      Calendar.DAY_OF_WEEK 是一个静态变量,它存储一个整数,该整数引用 Calendar 实例中的一个字段,其中包含它是星期几。

      你想做的是calDateOfDay.get(Calendar.DAY_OF_WEEK)

      【讨论】:

        【解决方案3】:
        || calDateOfDay.DAY_OF_WEEK == Calendar.SUNDAY 
        

        这意味着布尔语句的第一部分被编译器评估为始终为真。

        【讨论】:

          【解决方案4】:

          常量Calendar.SATURDAYCalendar.DAY_OF_WEEK 只是 static final int 的值 7. 因此 calDateOfDay.DAY_OF_WEEK == Calendar.SATURDAY 始终是 true

          您需要使用Calendar.get(int field) 来检查相应的字段

          calDateOfDay.get(Calendar.DAY_OF_WEEK)== Calendar.SATURDAY
          

          等等

          【讨论】:

            猜你喜欢
            • 2013-11-17
            • 2016-10-15
            • 2014-02-11
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2021-12-14
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多