Вход/Регистрация
Java: руководство для начинающих
вернуться

Шилдт Герберт

Шрифт:

Построчная буферизация вводимых данных средствами System, in часто приводит к недоразумениям. При нажатии клавиши в поток ввода записывается последовательность, состоящая из символов возврата каретки и перевода строки. Эти символы ожидают чтения из буфера ввода. Поэтому в некоторых приложениях, возможно, потребуется удалить символы возврата каретки и перевода строки, прежде чем переходить к следующей операции ввода. Для этого достаточно прочитать их из буфера ввода. Соответствующий пример реализации подобного решения на практике будет представлен далее в главе. Условный оператор if

Этот условный оператор уже был представлен в главе 1, а здесь он будет рассмотрен более подробно. Ниже приведена полная форма условного оператора if. if(условие) оператор; else оператор;

где условие — это некоторое условное выражение, а оператор — адресат операторов if и else. Оператор else не является обязательным. Адресатами обоих операторов, if и else, могут также служить блоки операторов. Ниже приведена общая форма условного оператора if, в котором используются блоки операторов. if (условие) { последовательность операторов } else { последовательность операторов }

Если условное выражение оказывается истинным, то выполняется адресат оператора if. В противном случае выполняется адресат оператора else, если таковой существует. Но одновременно не может выполняться и то и другое. Условное выражение, управляющее оператором if, должно давать результат типа bool.

Для того чтобы продемонстрировать применение оператора i f (и ряда других управляющих операторов) на практике, разработаем простую игру, основанную на угадывании. Возможно, она понравится вашим детям. В первой версии этой игры программа предложит пользователю угадать задуманную букву от А до Z. Если пользователь правильно угадает букву и нажмет на клавиатуре соответствующую клавишу, программа выведет сообщение Right (Правильно). Ниже приведен исходный код программы, реализующей эту игру. // Игра в угадывание букв, class Guess { public static void main(String args[]) throws java.io.IOException { char ch, answer = 'S'; System.out.println("Ifm thinking of a letter between A and Z."); System.out.print("Can you guess it: "); ch = (char) System.in.read; // прочитать символ с клавиатуры if(ch == answer) System.out.println("** Right **"); } }

Эта программа выводит на экран сообщение с предложением угадать букву, а затем читает символ с клавиатуры. Используя условный оператор if, она сравнивает введенный символ с правильным ответом (в данном случае это буква S). Если введена буква S, то отображается сообщение об угадывании буквы. Опробуя эту программу, не забывайте, что угадываемую букву следует вводить в верхнем регистре.

В следующей версии программы оператор else используется для вывода сообщения о том, что буква не была угадана. // Игра в угадывание букв, вторая версия class Guess2 { public static void main(String args[]) throws java.io.IOException { Глава 3. Управляющие операторы char ch, answer = 'S'; System.out.println("I'm thinking of a letter between A and Z."); System.out.print("Can you guess it: "); ch = (char) System.in.read; // ввести символ с клавиатуры if(ch == answer) System.out.println("** Right **"); else System.out.println("...Sorry, you're wrong."); } } Вложенные условные операторы if

Вложенные операторы if представляют собой условные операторы if, являющиеся адресатами оператора else. Подобные условные операторы очень часто встречаются в программах. Но, пользуясь ими, следует помнить, что в Java оператор else всегда связан с ближайшим к нему оператором if, находящимся в том же кодовом блоке и не связанном с другим оператором else. Рассмотрим следующий пример: if(i == 10) { if(j < 20) а = b; if(к > 100) с = d; else а = с; // этот оператор else относится к оператору if(к > 100) } else а = d; // а этот оператор else относится к оператору if(i == 10)

Как следует из комментариев к приведенному выше фрагменту кода, последний оператор else не имеет отношения к оператору if (j < 20), поскольку он не находится с ним в одном кодовом блоке, несмотря на то, что это ближайший оператор if, не имеющий себе в пару оператор else. Следовательно, последний оператор else относится к оператору if(i == 10). А в кодовом блоке оператор else связан с оператором if (к > 100), поскольку это самый близкий из всех находящихся к нему операторов if в том же самом блоке.

Используя вложенные условные операторы if, можно усовершенствовать игру, рассматриваемую здесь в качестве примера. Теперь при неудачной попытке угадать букву пользователю предоставляется дополнительная информация, подсказывающая, насколько он далек от правильного ответа. // Игра в угадывание букв, третья версия, class Guess3 { public static void main(String args[]) throws java.io.IOException { char ch, answer = 'S'; System.out.println("I'm thinking of a letter between A and Z."); System.out.print("Can you guess it: "); ch = (char) System.in.read; // ввести символ с клавиатуры if(ch == answer) System.out.println("** Right **"); else { 90 Java 7: руководство для начинающих, 5-е издание System.out.print("...Sorry, you're "); // вложенный оператор if if(ch < answer) System.out.println("too low"); else System.out.println("too high"); } } }

Выполнение этой программы может дать, например, следующий результат: I'm thinking of a letter between A and Z. Can you guess it: Z ...Sorry, you're too high Многоступенчатая конструкция if-else-if

В программировании часто применяется многоступенчатая конструкция if-else-if, состоящая из вложенных уловных операторов if. Ниже приведена ее общая форма. if (условие) оператор; else if (условие) оператор; else if (условие) оператор; else оператор;

Условные выражения в такой конструкции вычисляются сверху вниз. Как только обнаружится истинное условие, выполняется связанный с ним оператор, а все остальные операторы в многоступенчатой конструкции опускаются. Если ни одно из условий не является истинным, то выполняется последний оператор else, который зачастую служит в качестве условия, устанавливаемого по умолчанию. Когда же последний оператор else отсутствует, а все остальные проверки по условию дают ложный результат, никаких действий вообще не выполняется.

  • Читать дальше
  • 1
  • ...
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: