Как вывести hello world на java
Как вывести hello world на java
В этом уроке мы создадим нашу первую программу на языке Java.
Создание приложения на языке Java состоит из трех следующих шагов:
Создание исходного файла
Итак, открываем текстовый редактор и пишем в нем код программы Hello World, цель которой — вывод на экран сообщения Hello World!
Если вы пользуетесь Notepad++ то нужно выбрать Тип файла:Java source file (*.java)
Будьте внимательны! файл должен называться в точности так, как называется наш класс — HelloWorld. Так же важно учитывать регистр букв. HelloWorld и helloworld в данном случае это разные слова!
Компиляция исходного файла
Исходный файл с кодом программы создан, теперь перейдем к компиляции. Для компиляции Java предназначен компилятор javac, который входит в состав установленного нами в первом уроке пакета JDK.
Для того, чтобы скомпилировать исходный файл, открываем командную строку. Для этого в меню Windows Пуск в строке поиска вводим команду cmd и жмем Enter. После этого откроется командное окно.
Теперь в нем нужно изменить текущий каталог на тот, в котором находится наш исходный файл (например C:\studyjava\). Для этого вводим следующую команду:
После того, как директория изменилась, вводим команду компиляции
После этого, окно командной строки должно выглядеть следующим образом (рис 2.2):
То есть, мы не получим никакого подтверждения, о том, что программа скомпилировалась успешно. Однако, в папке с нашим исходным файлом, должен появиться файл HelloWorld.class. Это можно проверить с помощью команды
Эта команда выводит на экран список всех файлов, находящихся в выбранной директории (рис 2.3).
Если файл HelloWorld.class присутствует в этом списке, то это значит, что программа скомпилировалась успешно.
Если в коде программы есть ошибка, то компилятор Java при компиляции нам об этом сообщит.
Проведем эксперимент: Откроем в текстовом редакторе наш файл HelloWorld.java и удалим последнюю закрывающуюся фигурную скобку «>». Сохраним файл и попробуем его еще раз скомпилировать. В итоге получаем сообщение об ошибке (рис 2.4).
Чтобы исправить ошибку, нужно вновь открыть файл для редактирования, устранить ошибку, сохранить файл и еще раз его скомпилировать.
Запуск программы
Переходим к последней стадии — запуску программы.
Вводим в командном окне:
и если все перед этим было сделано правильно, то получаем результат — вывод сообщения «Hello World!» (рис 2.5).
Еще раз обратите внимание на чувствительность к регистру в Java. Если вы напишете helloworld вместо HelloWorld, то программа запущена не будет, потому что Java попросту не найдет файл с таким именем.
В качестве домашнего задания можете поэкспериментировать и выводить на экран какое-либо свое сообщение вместо Hello World!.
Java байткод «Hello world»
На хабре уже есть статья про java байткод. Я решил ее немного дополнить и в меру сил развить тему. Мне кажется довольно логичным разобрать простейшее приложение на Java. А что может быть проще «Hello world»?
Для своего эксперимента я создал директорию src, куда в папку hello положил файл App.java:
Скопилируем файл командой:
На выходе в папке classes у меня появился файл App.class Для начала сравним размеры java и class файлов.
App.java 139B
App.class 418B
Это было неожиданно. Мне почему-то казалось, что скомпилированный файл должен быть меньше. Попытаюсь открыть class файл:
Довольно непривычный вид для Java кода. Попробуем с помощью описание формата class файлов понять, что здесь закодировано.
Это 4 байта для magic, который определяет формат файла.
minor version — Минорная версия как следует из названия
major version — 2 байта под мажорную версию.
Сочетание minor и major version говорит о том, что я компилировал этот код с помощью J2SE 8.
Эти два байта представляют constant_pool_count и отвечают за размер constant_pool. В моем случае count равен 29, а размер пула, соответственно 28. Дальше идут элементы вида:
cp_info <
u1 tag; // 1 байт на тег
u1 info[]; // массив с описанием
>
Рассмотрим элементы в constant_pool.
Этот тег соответствует CONSTANT_Methodref, а значит дальше должно быть описание:
CONSTANT_Methodref_info <
u1 tag;
u2 class_index;
u2 name_and_type_index;
>
соответственно:
class_index, указывает на 6 элемент в constant_pool
name_and_type_index, указывает на 15 элемент в constant_pool
Пока не понятно, на какой метод указывает эта ссылка и мы идем дальше:
Это CONSTANT_Fieldref, а значит дальше ищем:
CONSTANT_Fieldref_info <
u1 tag;
u2 class_index;
u2 name_and_type_index;
>
И тут все очень похоже на предыдущий элемент, хотя не понятно что это за поле, в своем классе я вроде ничего такого не объявлял.
class_index в 16 элементе
name_and_type_index в 17 элементе
tag для CONSTANT_String
получаем, что самое интересное лежит в 18 элементе:
Tag соответствующий ссылке на метод:
класс которого описан в 19 элементе
a название и тип в 20 элементе:
5-ый элемент:
Tag для CONSTANT_Class
название, которого в 21 элементе
6-ой элемент:
Cнова CONSTANT_Class
c названием в 22 элементе
Как мы помним 1-ый элемент constant_pool относится к этому классу.
7-ой элемент:
tag, CONSTANT_Utf8, первая строчка
Она должна соответствовать:
CONSTANT_Utf8_info <
u1 tag;
u2 length;
u1 bytes[length];
>
Тогда длина нашей строчки 6 байт:
Это особое название, так помечаются конструкторы.
строчка длины 3 — «()V»:
Это описание нашего конструктора без параметров, который был упомянут в седьмом элементе.
9-ый элемент:
CONSTANT_Utf8
10-ый элемент:
Строка LineNumberTable
15-ый элемент
Tag, соответствует CONSTANT_NameAndType
а значит нам понадобится
CONSTANT_NameAndType_info <
u1 tag;
u2 name_index;
u2 descriptor_index;
>
и тогда:
ссылка на 7 элемент
ccылка на 8 элемент
Учитывая что первый элемент ссылался на это, мы можем заключить что первым был объявлен конструктор класса без параметров. Название класса, мы должны найти в 22 элементе.
16-ый элемент:
Tag, для CONSTANT_Class
c названием в 23 элементе
17-ый элемент:
Tag, CONSTANT_NameAndType, со ссылкой на 24 и 25 элемент constant_pool
18-ый элемент:
Ура «Hello world!»
19-ый элемент:
Tag, для CONSTANT_class c названием в 25-ом элементе
20-ый элемент:
Tag CONSTANT_NameAndType cо ссылкой на 27 и 28 элемент
25-ый элемент:
«Ljava/io/PrintStream;»
26-ой элемент:
«java/io/PrintStream»
methods_count у нас 2 метода в классе, конструктор по умолчанию и метод main:
Method 1 — Constructor
Один из самых интересных аттрибутов с кодом нашего метода code[code_length], разбор инструкций отдельная большая тема:
Аттрибут закончился и продолжается описание метода
Attribute 1 код метода main
Описание методов закончено и идет описание атрибутов класса
Теперь когда мы закончили с по-байтовым разбором class файла, становится понятно как работает:
Он автоматически выводит тоже самое, что я выписал руками:
А вот здесь можно посмотреть пример разбора class файла:
Быстрый старт с Java: от знакомства до вашей первой игры
Эта статья рассчитана на новичков в программировании. Её цель — объяснить азы языка Java (классы, методы, компиляция, байт-код, JVM, переменные, условия, циклы, импорт). Этот материал поможет:
Java Development Kit (JDK)
В строку поиска Google вводим запрос: “jdk 8 download”, первая же строка поисковой выдачи даст нам ссылку на страницу загрузки на сайте oracle.com. Листаем вниз, щёлкаем по радио-кнопке “Accept License Agreement”, соглашаясь с лицензией, и выбираем пакет в колонке “Download”, который соответствует вашей операционной системе и её разрядности (32/64). Для скачивания потребуется регистрация на сайте (нужно будет указать логин и e-mail). Скачиваем и устанавливаем. На этапе выбора пакетов и папки JDK рекомендуется отказаться от Public JRE и сократить имя папки до “jdk1.8”.
Счастливым обладателям Windows потребуется также настройка системных переменных. Как их найти: Панель управления → Система → Дополнительные параметры системы → Вкладка «Дополнительно» → кнопка «Переменные среды», второе окошко сверху. В нем надо создать переменную JAVA_HOME и изменить (дополнить) Path (для этого используются кнопки «Создать» и «Изменить». Значение для переменной JAVA_HOME содержит путь к папке JDK. Переменную Path дополняем значением %JAVA_HOME%\bin. Обратите внимание, что список путей разделяется точкой с запятой (;). Инструкция есть также на сайте Oracle.
JDK содержит много утилит, но нам потребуется только компилятор (javac) и виртуальная машина Java — JVM (java).
Проверить правильность установки и настройки можно в командной строке (на Windows: Win + R → cmd) или в терминале (Linux, Mac), набрав следующие команды:
В качестве альтернативы можно использовать онлайн-JDK вместе с редактором, например на сайте Repl.it.
Написание кода
Писать исходный код можно в любом текстовом редакторе. А компиляцию и запуск проводить в командной строке (терминале). Но удобнее будет работать в редакторе с подсветкой синтаксиса и плагином, автоматизирующим компиляцию и запуск.
Для Windows хорошим выбором будет Notepad++ с плагином NppExec. Для Linux и Мас существуют другие текстовые редакторы, например Atom или Geany. Подробно об их настройке можно прочитать в статье «Пишем код на Java и Go в текстовом редакторе».
Hello, world!
При изучении нового языка писать программу, выводящую «Hello, world!», — это традиция. Она возникла в 1978 году, с выходом в свет книги «Язык программирования С» Брайана Кернигана и Денниса Ричи.
Код начинается с ключевого слова class. Java-программы состоят из классов — это «кирпичики» приложения. В реальных приложениях их могут быть десятки, сотни и тысячи. Затем пишется имя класса — HelloWorld. Имена классов принято писать в стиле CamelCase (все слова слитно, каждое с заглавной буквы). Классам, как и другим сущностям — методам, полям и переменным — рекомендуется давать мнемонические, «говорящие» имена.
После имени в фигурных скобках записывается тело класса. Оно может содержать поля, методы и другие классы. Поля хранят данные. Они подобны переменным, однако в Java это несколько иная сущность. Методы содержат набор команд или код. Имена методов (как и полей, переменных) принято писать в стиле camelCase, со строчной буквы.
В нашем классе только один метод — main(). Он особенный, его часто называют стартовым. Когда виртуальная машина Java получает класс для исполнения, она ищет в нём метод main. Если находит — выполняет код, который содержит метод. Если нет — выдаёт сообщение об ошибке. Важно, чтобы метод main() имел строго определённую сигнатуру: был публичным (public), статическим (static), не возвращающим никакого значения (void), с параметром в виде массива строк (String[] args). В противном случае виртуальная машина его просто не найдёт.
Наш метод main() содержит лишь одну строку, которая выводит в консоль текст «Hello, world!».
Перед компиляцией сохраняем написанный код в файл. Имя файла должно соответствовать имени класса с точностью до регистра символов (Java — регистрозависимый язык). Затем открываем командную строку (или терминал) и вызываем сначала компилятор (javac), а потом виртуальную машину JVM (java).
После компиляции возникнет бинарный файл HelloWorld.class, содержащий байт-код. Имя этого файла (без расширения) передаётся как параметр при вызове виртуальной машины. В результате видим строку «Hello, world!» — это результат выполнения программы.
Переменные
Переменные хранят данные (числа, строки, логические значения и другие). Они похожи на коробочки: надписи на них — это имя и тип переменной, а внутри находится значение. При этом возможны две операции:
В Java перед использованием переменную нужно обязательно объявить, указав тип и имя, поскольку Java — язык со строгой и статической типизацией. Попытка использовать переменную без объявления приведёт к ошибке компиляции. По типу переменные могут быть простыми (числа, символы, логические значения) или ссылочными (массивы, строки, любые другие объекты). В Java есть восемь простых типов (byte, int, short, long, float, double, boolean, char) и бесконечное количество ссылочных.
В примере ниже мы видим объявление двух переменных целого типа (int). Причём переменная second инициируется при объявлении. Затем переменной first присваивается результат выражения, в котором присутствует переменная second. В результате выполнения программы в консоль будут выведены значения обеих переменных: 35 и 10.
Проверка условий
Любой язык программирования высокого уровня позволяет изменять порядок выполнения программы в зависимости от заданного условия. В Java для этого используется конструкция if. После этого ключевого слова в скобках записывается логическое выражение, затем в фигурных скобках — группа команд. Если результат логического выражения — true (истина), то эта группа команд выполняется, если false (ложь) — нет.
Результат этого примера — строка “i = 10” в консоли, так как результат логического выражения (проверка на равенство) будет true.
Циклы
Циклы предназначены для повторения группы команд. Java позволяет использовать два вида циклов:
Запустив этот пример, мы увидим в консоли колонку чисел от 0 до 4. Это результат работы классического цикла for со счётчиком. В круглых скобках три параметра цикла, разделённые точкой с запятой: объявление и инициализация счётчика, проверка условия продолжения цикла, действие после каждой итерации. В фигурных скобках — тело цикла. В нашем случае это команда, выводящая значение счётчика i в консоль.
Когда будем писать игру, используем циклы while и do-while — там и увидим их работу на практике. Пока достаточно сказать, что их синтаксис проще for, а тело цикла повторяется до тех пор, пока логическое выражение в круглых скобках после while возвращает true.
Пример ниже иллюстрирует вторую форму цикла for — без счётчика. Такой вариант удобен при переборе элементов массива или списка.
Импорт и использование классов
Один из важных принципов программирования — DRY: Don’t Repeat Youself (не повторяйся). Разработчик должен уметь использовать то, уже создано, отлажено и работает.
Java поставляется с набором packages (пакетов). Они содержат скомпилированные классы, сгруппированные по тематике. На неё указывает имя пакета: java.io, java.util, java.net и так далее.
В игре нам потребуется случайное число от 0 до 9. Писать генератор случайных чисел незачем, так как в пакете java.util есть готовый класс Random. Чтобы использовать класс из пакета, его нужно импортировать. Строки с директивами импорта располагаются в самом начале файла класса.
Создадим объект на основании класса, чтобы можно было вызвать нужный метод. Слева от знака присваивания (=) объявляем ссылочную переменную (объект) random типа Random. Справа создаём объект с помощью директивы new.
Вызываем метод через точку после имени объекта: random.nextInt(10). Цифра 10 ограничивает диапазон генерируемых чисел (от 0 до 9). В результате получим строку из 30 случайных чисел. Запустите программу несколько раз и обратите внимание, что последовательность чисел не повторяется.
Игра «Угадай число»
Мы узнали достаточно, чтобы написать игру «Угадай число». В ней компьютер «загадывает» целое число от 0 до 9, а человек должен угадать его — есть три попытки.
Создадим класс GuessTheNumber с методом main(), импортируем нужные нам классы и добавим соответствующие объекты. Класс Scanner обеспечит чтение чисел с консоли (System.in — консоль).
Объявим и инициируем три переменные: счётчик попыток count, для чтения числа с консоли — guess, для хранения загаданного числа — number.
Опишем основной игровой цикл, используя while. В цикле запрашиваем число с консоли, сравниваем с загаданным. В случае несовпадения выводим подсказку и увеличиваем счётчик попыток на 1.
Тело цикла while повторяется, пока логическое значение в скобках возвращает true. Таким образом наш цикл будет повторяться, пока значение счётчика попыток меньше 3 и число не отгадано. Обратите внимание на конструкцию, которая позволяет выбрать одно из двух значений согласно условию в скобках. Это тернарный оператор. Если условие в скобках true, то возвращается значение слева от двоеточия, если false — справа.
Остаётся добавить строку с выводом результата игры (победа или проигрыш) после цикла — тут снова используется тернарный оператор. Текст работающей программы выглядит так:
Сохраняем программу в файл GuessTheNumber.java, компилируем (javac), вызываем JVM (java) — и пробуем выиграть у компьютера.
Добавим заключительный штрих: используя цикл do-while, позволим пользователю повторять сеанс игры без перезапуска программы. В приведённом ниже коде комментарий нужно заменить на соответствующий фрагмент из предыдущей программы. Попробуйте сделать это самостоятельно.
Обратите внимание, что тело цикла do-while повторяется на тех же условиях, что и тело цикла while: логическое выражение в скобках должно быть true.
Заключение
На всякий случай прилагаю мой telegram — @biblelamp. Если вас заинтересовала тема, рекомендую почитать «Java-программирование для начинающих» Майка МакГрата и «Изучаем Java» Кэти Сьерра и Берт Бейтс. В следующих статьях мы продолжим начальное изучение Java на примере создания других игр. Следите за блогом!
Другие статьи из серии «Быстрый старт с Java»:
Если язык Java вас заинтересовал — приглашаем на факультет Java-разработки. Если ещё не совсем уверены — посмотрите истории успеха наших Java-выпускников:
Эта статья рассчитана на новичков в программировании. Её цель — объяснить азы языка Java (классы, методы, компиляция, байт-код, JVM, переменные, условия, циклы, импорт). Этот материал поможет:
Java Development Kit (JDK)
В строку поиска Google вводим запрос: “jdk 8 download”, первая же строка поисковой выдачи даст нам ссылку на страницу загрузки на сайте oracle.com. Листаем вниз, щёлкаем по радио-кнопке “Accept License Agreement”, соглашаясь с лицензией, и выбираем пакет в колонке “Download”, который соответствует вашей операционной системе и её разрядности (32/64). Для скачивания потребуется регистрация на сайте (нужно будет указать логин и e-mail). Скачиваем и устанавливаем. На этапе выбора пакетов и папки JDK рекомендуется отказаться от Public JRE и сократить имя папки до “jdk1.8”.
Счастливым обладателям Windows потребуется также настройка системных переменных. Как их найти: Панель управления → Система → Дополнительные параметры системы → Вкладка «Дополнительно» → кнопка «Переменные среды», второе окошко сверху. В нем надо создать переменную JAVA_HOME и изменить (дополнить) Path (для этого используются кнопки «Создать» и «Изменить». Значение для переменной JAVA_HOME содержит путь к папке JDK. Переменную Path дополняем значением %JAVA_HOME%\bin. Обратите внимание, что список путей разделяется точкой с запятой (;). Инструкция есть также на сайте Oracle.
JDK содержит много утилит, но нам потребуется только компилятор (javac) и виртуальная машина Java — JVM (java).
Проверить правильность установки и настройки можно в командной строке (на Windows: Win + R → cmd) или в терминале (Linux, Mac), набрав следующие команды:
В качестве альтернативы можно использовать онлайн-JDK вместе с редактором, например на сайте Repl.it.
Написание кода
Писать исходный код можно в любом текстовом редакторе. А компиляцию и запуск проводить в командной строке (терминале). Но удобнее будет работать в редакторе с подсветкой синтаксиса и плагином, автоматизирующим компиляцию и запуск.
Для Windows хорошим выбором будет Notepad++ с плагином NppExec. Для Linux и Мас существуют другие текстовые редакторы, например Atom или Geany. Подробно об их настройке можно прочитать в статье «Пишем код на Java и Go в текстовом редакторе».
Hello, world!
При изучении нового языка писать программу, выводящую «Hello, world!», — это традиция. Она возникла в 1978 году, с выходом в свет книги «Язык программирования С» Брайана Кернигана и Денниса Ричи.
Код начинается с ключевого слова class. Java-программы состоят из классов — это «кирпичики» приложения. В реальных приложениях их могут быть десятки, сотни и тысячи. Затем пишется имя класса — HelloWorld. Имена классов принято писать в стиле CamelCase (все слова слитно, каждое с заглавной буквы). Классам, как и другим сущностям — методам, полям и переменным — рекомендуется давать мнемонические, «говорящие» имена.
После имени в фигурных скобках записывается тело класса. Оно может содержать поля, методы и другие классы. Поля хранят данные. Они подобны переменным, однако в Java это несколько иная сущность. Методы содержат набор команд или код. Имена методов (как и полей, переменных) принято писать в стиле camelCase, со строчной буквы.
В нашем классе только один метод — main(). Он особенный, его часто называют стартовым. Когда виртуальная машина Java получает класс для исполнения, она ищет в нём метод main. Если находит — выполняет код, который содержит метод. Если нет — выдаёт сообщение об ошибке. Важно, чтобы метод main() имел строго определённую сигнатуру: был публичным (public), статическим (static), не возвращающим никакого значения (void), с параметром в виде массива строк (String[] args). В противном случае виртуальная машина его просто не найдёт.
Наш метод main() содержит лишь одну строку, которая выводит в консоль текст «Hello, world!».
Перед компиляцией сохраняем написанный код в файл. Имя файла должно соответствовать имени класса с точностью до регистра символов (Java — регистрозависимый язык). Затем открываем командную строку (или терминал) и вызываем сначала компилятор (javac), а потом виртуальную машину JVM (java).
После компиляции возникнет бинарный файл HelloWorld.class, содержащий байт-код. Имя этого файла (без расширения) передаётся как параметр при вызове виртуальной машины. В результате видим строку «Hello, world!» — это результат выполнения программы.
Переменные
Переменные хранят данные (числа, строки, логические значения и другие). Они похожи на коробочки: надписи на них — это имя и тип переменной, а внутри находится значение. При этом возможны две операции:
В Java перед использованием переменную нужно обязательно объявить, указав тип и имя, поскольку Java — язык со строгой и статической типизацией. Попытка использовать переменную без объявления приведёт к ошибке компиляции. По типу переменные могут быть простыми (числа, символы, логические значения) или ссылочными (массивы, строки, любые другие объекты). В Java есть восемь простых типов (byte, int, short, long, float, double, boolean, char) и бесконечное количество ссылочных.
В примере ниже мы видим объявление двух переменных целого типа (int). Причём переменная second инициируется при объявлении. Затем переменной first присваивается результат выражения, в котором присутствует переменная second. В результате выполнения программы в консоль будут выведены значения обеих переменных: 35 и 10.
Проверка условий
Любой язык программирования высокого уровня позволяет изменять порядок выполнения программы в зависимости от заданного условия. В Java для этого используется конструкция if. После этого ключевого слова в скобках записывается логическое выражение, затем в фигурных скобках — группа команд. Если результат логического выражения — true (истина), то эта группа команд выполняется, если false (ложь) — нет.
Результат этого примера — строка “i = 10” в консоли, так как результат логического выражения (проверка на равенство) будет true.
Циклы
Циклы предназначены для повторения группы команд. Java позволяет использовать два вида циклов:
Запустив этот пример, мы увидим в консоли колонку чисел от 0 до 4. Это результат работы классического цикла for со счётчиком. В круглых скобках три параметра цикла, разделённые точкой с запятой: объявление и инициализация счётчика, проверка условия продолжения цикла, действие после каждой итерации. В фигурных скобках — тело цикла. В нашем случае это команда, выводящая значение счётчика i в консоль.
Когда будем писать игру, используем циклы while и do-while — там и увидим их работу на практике. Пока достаточно сказать, что их синтаксис проще for, а тело цикла повторяется до тех пор, пока логическое выражение в круглых скобках после while возвращает true.
Пример ниже иллюстрирует вторую форму цикла for — без счётчика. Такой вариант удобен при переборе элементов массива или списка.
Импорт и использование классов
Один из важных принципов программирования — DRY: Don’t Repeat Youself (не повторяйся). Разработчик должен уметь использовать то, уже создано, отлажено и работает.
Java поставляется с набором packages (пакетов). Они содержат скомпилированные классы, сгруппированные по тематике. На неё указывает имя пакета: java.io, java.util, java.net и так далее.
В игре нам потребуется случайное число от 0 до 9. Писать генератор случайных чисел незачем, так как в пакете java.util есть готовый класс Random. Чтобы использовать класс из пакета, его нужно импортировать. Строки с директивами импорта располагаются в самом начале файла класса.
Создадим объект на основании класса, чтобы можно было вызвать нужный метод. Слева от знака присваивания (=) объявляем ссылочную переменную (объект) random типа Random. Справа создаём объект с помощью директивы new.
Вызываем метод через точку после имени объекта: random.nextInt(10). Цифра 10 ограничивает диапазон генерируемых чисел (от 0 до 9). В результате получим строку из 30 случайных чисел. Запустите программу несколько раз и обратите внимание, что последовательность чисел не повторяется.
Игра «Угадай число»
Мы узнали достаточно, чтобы написать игру «Угадай число». В ней компьютер «загадывает» целое число от 0 до 9, а человек должен угадать его — есть три попытки.
Создадим класс GuessTheNumber с методом main(), импортируем нужные нам классы и добавим соответствующие объекты. Класс Scanner обеспечит чтение чисел с консоли (System.in — консоль).
Объявим и инициируем три переменные: счётчик попыток count, для чтения числа с консоли — guess, для хранения загаданного числа — number.
Опишем основной игровой цикл, используя while. В цикле запрашиваем число с консоли, сравниваем с загаданным. В случае несовпадения выводим подсказку и увеличиваем счётчик попыток на 1.
Тело цикла while повторяется, пока логическое значение в скобках возвращает true. Таким образом наш цикл будет повторяться, пока значение счётчика попыток меньше 3 и число не отгадано. Обратите внимание на конструкцию, которая позволяет выбрать одно из двух значений согласно условию в скобках. Это тернарный оператор. Если условие в скобках true, то возвращается значение слева от двоеточия, если false — справа.
Остаётся добавить строку с выводом результата игры (победа или проигрыш) после цикла — тут снова используется тернарный оператор. Текст работающей программы выглядит так:
Сохраняем программу в файл GuessTheNumber.java, компилируем (javac), вызываем JVM (java) — и пробуем выиграть у компьютера.
Добавим заключительный штрих: используя цикл do-while, позволим пользователю повторять сеанс игры без перезапуска программы. В приведённом ниже коде комментарий нужно заменить на соответствующий фрагмент из предыдущей программы. Попробуйте сделать это самостоятельно.
Обратите внимание, что тело цикла do-while повторяется на тех же условиях, что и тело цикла while: логическое выражение в скобках должно быть true.
Заключение
На всякий случай прилагаю мой telegram — @biblelamp. Если вас заинтересовала тема, рекомендую почитать «Java-программирование для начинающих» Майка МакГрата и «Изучаем Java» Кэти Сьерра и Берт Бейтс. В следующих статьях мы продолжим начальное изучение Java на примере создания других игр. Следите за блогом!
Другие статьи из серии «Быстрый старт с Java»:
Если язык Java вас заинтересовал — приглашаем на факультет Java-разработки. Если ещё не совсем уверены — посмотрите истории успеха наших Java-выпускников: