Задача-загадка (на цикл и оператор switch в Java)

FacebooktwittertumblrFacebooktwittertumblr

Данная статья:


Если Вы шли последовательно по нашему Самоучителю, то наверняка уже решали простейшие задачи на циклы. В этих задачах Вы могли неоднократно встречать оператор if. Теперь, давайте попрактикуемся использовать циклы в сочетании с оператором switch.

Решаем загадку

Представим, что у нас есть загадка: "Что это такое: синий, большой, с усами и полностью набит зайцами?" Ответ: троллейбус. Можно возражать, конечно, какого цвета сейчас троллейбусы - но мы не об этом.

Представим, что Вы загадываете эту загадку пользователю. Создайте программу, которая будет считывать с консоли ответ:

  • у пользователя есть 3 попытки. После трех ответов программа должна завершиться;
  • если пользователь вводит "Троллейбус", мы выводим в консоль "Правильно!" и выходим из цикла;
  • если пользователь вводит "Сдаюсь", мы выводим в консоль "Правильный ответ: троллейбус." и выходим из цикла;
  • если пользователь вводит любой другой ответ, мы выводим в консоль "Подумай еще." и продолжаем цикл.

Решение:

Вот как выглядит решение. Давайте разберем его по шагам.

Шаг 1. Выводим условие.

Шаг 2. Подключаем сканер.

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

или в начальных задачах на циклы.

В итоге, имеем следующее:

Как видим, мы создали Scanner под названием inputAnswer (переводится как "ввод ответа"). Кроме того, мы создали переменную String answer, в которой будем хранить результат работы Scanner-а

Еще мы считываем с консоли один раз:

Но это не то, что нам нужно. Считывать нужно не один раз, а три - потому что у нас три попытки. Поэтому, давайте перейдем к следующему шагу.

Шаг 3. Добавляем цикл.

Итак, нужно считывать три раза. Давайте добавим цикл for:

Как видите, цикл идет от 1 до 3 включительно - то-есть делает три шага. Теперь Scanner считывает ответ трижды.

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

Что бы мы не ввели, разницы нет:

Теперь давайте добавим оператор switch.

Шаг 3. Добавляем оператор switch.

Вспомним условие:

  • если пользователь вводит "Троллейбус", мы выводим в консоль "Правильно!";
  • если пользователь вводит "Сдаюсь", мы выводим в консоль "Правильный ответ: троллейбус.";
  • если пользователь вводит любой другой ответ, мы выводим в консоль "Подумай еще."

Создадим соответствующий switch:

Если Вы плохо помните, как работает оператор switch, можете вернуться к этой статье:

Итак, теперь если написать в консоли :"Троллейбус" - программа зайдет в первое условие, и напишет "Правильно!", если "Сдаюсь" - "Правильный ответ: троллейбус.", а если что-то другое - "Подумай еще." Если добавить это в наш код, получим следующее:

Давайте протестируем:

Как видите, все так как мы хотели. Теперь, остался еще один шаг.

Шаг 4. Добавляем выход из цикла.

Теперь, мы должны выходить из цикла, если пользователь сдается или отвечает правильно. Как это сделать?

Для этого используем переменную типа boolean и оператор break. Если оператор break вам не знаком, или Вы что-то забыли - пересмотрите нашу статью, посвященную этому оператору.

Итак, объявляем переменную exit, которая будет иметь тип "boolean". Как можно догадаться, она будет  true если нам нужно выйти из цикла, и false если выходить не нужно.

Поэтому, объявляем переменную, и задаем ей значение по умолчанию - false:

Кроме того, в цикл нужно добавить условие выхода:

Если добавить оба отрывка кода в цикл - видим следующее:

Подождите. Так условие всегда будет false - оно же нигде не меняется! Что делать - давайте подумаем.

Переменная exit должна стать true, если ответ правильный (case ("Троллейбус")), или если пользователь сдается (case ("Сдаюсь")). Поэтому, мы должны поменять значение exit в этих двух случаях. Поэтому, допишем:

Видите новую строку в середине? Мы изменяем значение exit на true в середине кейса.

Сделаем то же самое для второго:

Кстати, так можно дописывать любые условия - в любом количестве 🙂

В итоге получим:

Вот пример наших результатов:

Отлично, все работает!


Понравилась наша статья? Есть возможность обучаться у нас на курсах. Детальнее на нашем сайте.

FacebooktwittertumblrFacebooktwittertumblr

FacebooktwittertumblrFacebooktwittertumblr
Самоучители--узнать детальнее--