Проблема с оператором if, затмение говорит "мертвый код" - PullRequest
2 голосов
/ 06 июля 2011

Прежде всего, ЛЮБАЯ помощь, которую могут предложить люди, очень ценится!

Хорошо, у меня есть этот цикл, и у меня, похоже, есть проблема с оператором 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);   

        }

Ответы [ 4 ]

7 голосов
/ 06 июля 2011

DAY_OF_WEEK - это константа, содержащая номер поля для дня недели. Ваш код использует его так, как если бы он содержал значение этого поля, чего нет.

Чтобы исправить код, просто замените calDateOfDay.DAY_OF_WEEK на calDateOfDay.get(Calendar.DAY_OF_WEEK).

1 голос
/ 06 июля 2011

Calendar.DAY_OF_WEEK - это статическая переменная, которая хранит целое число, ссылающееся на поле в экземпляре Calendar, в котором указано, какой день недели это.

Что вы хотите сделать, это calDateOfDay.get(Calendar.DAY_OF_WEEK).

0 голосов
/ 06 июля 2011

Константы Календарь. СУББОТА и Calendar.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

и т.д.

0 голосов
/ 06 июля 2011
|| calDateOfDay.DAY_OF_WEEK == Calendar.SUNDAY 

Это означает, что первая часть логического оператора оценивается компилятором как ВСЕГДА true.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...