Давайте посмотрим на ваши утверждения if и запомним правила для високосных лет.
Понимание високосных лет
В общем, високосный год - это год, который делится на четыре, т.е. где утверждение year % 4 == 0
истинно.
Но: если год не високосный, то он делится на 100. Т.е. year % 100 == 0
верно.
Исключение: когда этотакже делится на 400, т. е. year % 400 == 0
верно - тогда у нас есть високосный год.
По существу: делится на четыре, дает кандидата - вам нужно изучить его дальше, чтобы принять окончательное решение.
Дерево решений
- Это кандидат високосного года?
year % 4 == 0
В противном случае: отобразить «не високосный год» - Это исключение високосного года (каждые 100 лет)?
year % 100 == 0
В противном случае: отобразить «не високосный год» - Это исключение для високосного года (каждые 400 лет)?
year % 400 == 0
True => Показать «високосный год», False => Показать «не високосный год»
Ваша реализация
Давайте сначала посмотрим на ваше утверждение if
.
Ваш первый оператор if проверяет, делится ли год на четыре. Это так, чтобы вы знали, имеете ли вы дело с кандидатом високосного года. Так что это правильно - но вы забыли разобраться со случаем, когда год НЕ является високосным годом (поэтому здесь вы пропускаете возможный выход "не високосного года")
Теперь это немного сбивает с толку. Вы проверяете, не является ли год делимым на 100. Если кандидат високосного года НЕ делится на 100, это високосный год. Таким образом, вы можете вывести сообщение об успехе, но вам придется иметь дело со случаем «else».
Третий if вложен в неправильный блок if. Он принадлежит к блоку else родительского блока.
Подсказки
Попытайтесь понять, как вход и выход связаны друг с другом, и попробуйте поразить каждыйif / else.
Всякий раз, когда вы пишете if, подумайте, нужен ли вам соответствующий блок else.
Если что-то становится странным, попробуйте «отследить» вашу программу с помощью «хлебных крошек»: System.out.println ( "1");System.out.println ( "2");... в каждой строке, где вы имеете дело с ветвлением или циклом (если, иначе, переключитесь, в то время как ...), это будет отслеживать каждый шаг программы в командной строке. Вы можете использовать это, пока ваша школа не поощрит вас использовать правильную IDE.
Не забывайте: практика совершенствует;)
Pseude code (спойлер)
Используйте толькоэто если вы полностью застряли.
Итог
Некоторая часть вашей логики неверна, и вы забыли реализовать else
ответвлений.
HTH