Недоступный оператор в моем общедоступном логическом методе

#java

#java

Вопрос:

Итак, я пытаюсь создать метод isValid, который проверяет, является ли определенная дата реальной или нет (т. Е. 31/3/2016 действительна, 29/29/2001 действительна, поскольку это високосный год, 3/30/2016 недействительна)

Вот мой метод public boolean isValid()

`

 {
   //January
    if (month == 1 amp;amp; day <= 31) {
        return true;
    }
    else {
        return false;
    }

    //February
    if (month == 2 amp;amp; day <= 28) {
            return true;
    }
    else {
        if ((((year % 4) == 0) amp;amp; ((year % 100) != 0)) || ((year % 400) == 0)) {
            if (day == 29) {
                return true;
            }
            else {
                return false;
            }
        }
        else {
            return false;
        }
    }

    //March
    if (month == 3 amp;amp; day <= 31) {
        return true;
    }
    else {
        return false;
    }

    //April
    if (month == 4 amp;amp; day <= 30) {
        return true;
    }
    else {
        return false;
    }

    //May
    if (month == 5 amp;amp; day <= 31) {
        return true;
    }
    else {
        return false;
    }

    //June
    if (month == 6 amp;amp; day <= 30) {
        return true;
    }
    else {
        return false;
    }

    //July
    if (month == 7 amp;amp; day <= 31) {
        return true;
    }
    else {
        return false;
    }

    //August
    if (month == 8 amp;amp; day <= 31) {
        return true;
    }
    else {
        return false;
    }

    //September
    if (month == 9 amp;amp; day <= 30) {
        return true;
    }
    else {
        return false;
    }

    //October
    if (month == 10 amp;amp; day <= 31) {
        return true;
    }
    else {
        return false;
    }

    //November
    if (month == 11 amp;amp; day <= 30) {
        return true;
    }
    else {
        return false;
    }

    //December
    if (month == 12 amp;amp; day <= 31) {
        return true;
    }
    else {
        return false;

    }

}
  

`

Теперь, когда я компилирую, он говорит, что есть недоступные операторы, по существу, везде, где написано «if». Кто-нибудь, пожалуйста, может помочь? Я уже пробовал метод ‘if (true) {return}’ и не могу найти ничего другого полезного.

Комментарии:

1. 2001 год не является високосным…

Ответ №1:

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

Исправление для этого состоит в том, чтобы удалить все ваши пути else return false и поместить все операторы if в цепочку else if, а затем вернуть false в конце этого.

например

 if(){
    ...
}else if(){
    ...
}
return false;
  

Комментарии:

1. Итак, как именно я могу это исправить? Должен ли я создать 12 разных методов?

2. Мой плохой: // должен быть обновлен

3. amp;amp; также имеет плохие последствия.

4. примите ответ, если вы удовлетворены, чтобы люди знали, что вопрос решен 🙂

5. одна вещь, теперь это говорит о том, что я пропускаю оператор return.

Ответ №2:

Ваш код должен if elseif elseif elseif … else…

когда вы говорите if и else.. ваш код завершится либо на if, либо на else.. отныне другие операторы if недоступны…

это ошибка, которую вы получаете … измените другие условия на elseif

Ответ №3:

Ваш код никогда не перейдет ко второму оператору if, поскольку часть else первого (январского) завершит вашу программу

Ваш код должен быть похож:

 if(month == 1)
{
   if(day <= 31)
      return true;
   else
      return false;
}
if(month==2)
{
  ----
  ----
}
  

Ответ №4:

 return **statement should be last statement of any method**
  

иначе вы можете использовать переменную вместо прямого оператора return, например

 public boolean isValid()
{
 boolean status=false;
       if(condition)
          {
              status=true;
          }
    return status;
}