#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;
}