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

Капитан умирает и, зная, что его оставшиеся подчиненные не очень опытны, решает написать программу на Java, чтобы передать свои последние приказы. Войска должны удерживать одну сторону моста в ожидании подкрепления.

Первая команда, которую капитан хочет убедиться, что его войска понимают, такова:

Если они перейдут мост, стреляйте в них.

Итак, как вы моделируете эту ситуацию в Java? Вам нужна логическая переменная isComingOverBridge. Следующий фрагмент кода предполагает, что переменная isComingOverBridge была объявлена ​​и инициализирована либо true, либо false.

Затем вы можете использовать if вот так:

Если isComingOverBridge логическое значение равно true , будет выполнен код внутри открывающей и закрывающей фигурных скобок. Если нет, программа продолжается после if блока и без запуска кода внутри него.

В противном случае сделайте это

Капитан также хочет сказать своим войскам, что делать (остаться на месте), если враг не идет по мосту.

Если вы хотите явно что-то сделать, когда if не оценивается как true, вы можете использовать else.

Например, чтобы сказать войскам оставаться на месте, если враг не идет по мосту, вы можете написать такой код:

Затем капитан понял, что проблема не так проста, как он думал сначала. Что, если враг придет по мосту, но у него слишком много войск? Его отряд будет разбит. Итак, он придумал этот код:

Приведенный выше код имеет три возможных пути выполнения. Во-первых, если противник идет по мосту, а дружественных войск больше:

Во-вторых, если вражеские войска идут по мосту и превосходят по численности дружественные войска:

Затем будет выполнен третий и последний возможный результат, если ни один из других не является true, который захватывается окончательным else без какого-либо if условия.

Вызов читателя

Можете ли вы найти ошибку в приведенном выше коде, которая может оставить группу неопытных солдат в полном беспорядке? Возможность того, что вражеские войска и дружественные войска будут точно равными по количеству, не была обработана явно и, следовательно, будет обработана последним else, который предназначен для случаев, когда нет вражеских войск. Любой уважающий себя капитан ожидал бы, что его войска будут сражаться в этой ситуации, и он мог бы изменить первое if statement, чтобы учесть эту возможность, следующим образом:

Наконец, последней заботой капитана было то, что если враг пройдет по мостику, размахивая белым флагом капитуляции, и будет немедленно перебит, то его люди станут военными преступниками. Необходимый Java-код был очевиден. Используя переменную wavingWhiteFlag Boolean, он написал этот тест:

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

Это показывает, что вы можете вкладывать утверждения if и else друг в друга для принятия глубоких и детальных решений.

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

Теперь взгляните на некоторые другие способы принятия решений в Java.

Переключение на принятие решений

Вы видели обширные и практически безграничные возможности комбинирования операторов Java с операторами if и else . Но иногда решение в Java лучше принять другими способами.

Когда ваше решение основано на четком списке возможностей, не связанных со сложными комбинациями, то switch — это обычно правильный путь.

Вы можете запустить switch decision следующим образом:

В предыдущем примере аргумент может быть выражением или переменной. Внутри фигурных скобок {} вы можете принимать решения на основе аргумента с case и break элементами:

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

Первый break encountered выходит из блока переключателя, чтобы перейти к следующей строке кода после закрывающей фигурной скобки } всего блока переключателя.

Вы также можете использовать default без значения для запуска некоторого кода в случае, если ни один из операторов case не оценивается как true, как показано ниже:

Пришло время взглянуть на полный пример switch в действии.

Пример переключения

Давайте представим, что вы пишете старомодную текстовую приключенческую игру, в которой игрок вводит такие команды, как «Иди на восток», «Иди на запад», «Возьми меч» и т. д. ситуации, как показано в следующем примере кода, и вы можете использовать default для обработки игрока, вводящего команду, которая специально не обрабатывается:

В зависимости от инициализации команды она может обрабатываться одним из операторов case. В противном случае вы получите значение по умолчанию Извините, я не говорю по-эльфийски.

Если у вас есть много кода для выполнения в конкретном случае, вы можете поместить его весь в метод, как показано здесь:

Конечно, тогда вам нужно будет написать новый метод goWest. Затем, когда командная переменная инициализируется как «идти на запад», будет выполняться метод goWest, возвращаясь к оператору break, что приведет к продолжению кода после блока switch.

Если вам понравилась эта статья, вы можете изучить статью Изучение Java путем создания игр для Android — второе издание. Книга проведет вас через разработку шести интересных игр, постепенно объясняя вам основные концепции как Java, так и Android. Если вы новичок в Java, Android и программировании игр, обязательно прочитайте книгу Java при создании игр для Android — второе издание.