Для технической части: начните с чтения о
приоритет java операторов , а затем облегчает чтение вашего кода.
Помещение множества условий в один if не полезно. Вы видите это сами: вы думаете, что код правильный, но, вероятно, это не так. А теперь вы обращаетесь к другим людям, чтобы объяснить вам ваш слишком сложный код. И, конечно, все остальные ответы делают все это для вас ... но кроме этого:
«Настоящий» ответ здесь: научитесь проверять ваш код.
Вместо основного, который каким-то образом запрашивает число, а затем принимает решения, напишите метод boolean isWeird()
, который принимает число и возвращает true / false в соответствии с вашими требованиями.
А затем просто протестируйте этот метод со всеми разумными случаями. А затем проверьте, соответствует ли этот результат ожидаемому.
Используя JUnit, вы могли бы написать что-то вроде
assertThat(isWeird(1), true);
assertThat(isWeird(21), true);
assertThat(isWeird(22), true);
...
В идеале вы пишете такие тесты до того, как реализуете этот метод. И затем вы выполняете все условия, и любая неудачная проверка говорит вам, что вы что-то не так сделали.