Как сделать меню в консоли java

Обновлено: 05.07.2024

Консоль (console) в Java обеспечивает простое и удобное взаимодействия с пользователем. С помощью консоли можно выводить какую-нибудь информацию либо, напротив, используя консоль, считывать данные. В этой статье будет рассказано о том, как осуществляется ввод и вывод данных в консоли Java.

Чтобы обеспечивать взаимодействие с консолью, в языке программирования Java используют класс System.

Вывод на консоль в Java

Чтобы создать потока вывода в вышеупомянутый класс System, вам понадобится специальный объект out. В нём определен метод println, обеспечивающий вывод значения на консоль и перевод курсора консоли на другую строку.

Рассмотрим практический пример с Hello world:

Что здесь происходит? В метод println осуществляется передача значения (в нашем случае это строка), которое пользователь желает вывести в консоль Java. Консольный вывод данных в Джава будет следующий:

Выполнять перевод строки не обязательно. Если необходимость в этом отсутствует, применяют метод System.out.print() . Он аналогичен println, но перевод каретки на следующую строку не выполняется.

Вывод в консоли Java:

Однако никто не мешает, используя System.out.print, всё же выполнить перенос на следующую строку. Как вариант — использование \n:

Также есть возможность подставить в строку Ява данные, которые объявлены в переменных. Вот, как это реализуется:

В консоли увидим:

Ещё в Java существует функция, предназначенная для форматирования вывода в консоли, — System.out.printf() . При использовании со спецификаторами, она позволяет добиться нужного формата вывода.

Спецификаторы: • %d — для вывода в консоль целочисленных значений; • %x — для 16-ричных чисел; • %f — выводятся числа с плавающей точкой; • %e — для чисел в экспоненциальной форме (1.3e+01); • %c — вывод в консоль одиночного символа; • %s — вывод в консоль строковых значений.

Рассмотрим, как это функционирует на практике:

Ввод с консоли Java или как ввести данные с консоли Джавы

Чтобы обеспечить ввод с консоли Java, в классе System есть объект in. Именно через объект System.in работать не очень удобно, поэтому часто применяют класс Scanner. Он уже, в свою очередь, как раз таки и применяет System.in.

Рассмотрим практический пример:

Сам по себе класс Scanner хранится в пакете java.util, поэтому в начале кода мы выполняем его импорт посредством команды import java.util.Scanner.

Для создания непосредственно объекта Scanner в его конструктор осуществляется передача объекта System.in. Далее можно получать значения. В нашей мини-программе сначала выводится просьба ввести номер, а потом введённое пользователем число помещается в переменную num (для получения введённого значения задействуется метод in.nextInt() , возвращающий набранное на клавиатуре целочисленное значение.

Лучше всего попробовать работу этой программы с помощью одного из многочисленных онлайн-компиляторов.

Для класса Scanner предусмотрены и другие методы: • next() — для считывания введённой строки до первого пробела; • nextLine() — для всей введённой строки; • nextInt() — считывает введённое число int; • nextDouble() — для double; • nextBoolean() — для boolean; • nextByte() — для byte; • nextFloat() — для float; • nextShort() — для short.

Давайте напишем простую программу, обеспечивающую ввод информационных данных о человеке в консоль Java:

В этой программке пользователь последовательно вводит данные разных типов: String, int и float. Потом вся информация выводится в консоль Java:

Вот и всё. Это базовые вещи, если же вас интересуют более продвинутые знания, записывайтесь на курс OTUS в Москве:

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

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

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

Меню в приложениях представляет класс android.view.Menu , и каждая activity ассоциируется с объектом этого типа. Объект android.view.Menu может включать различное количество элементов, а те в свою очередь могут хранить подэлементы.

Определение меню в xml

Меню, как и файлы интерфейса или изображений, также представляет собой ресурс. Однако при создании нового проекта с Empty Activity по умолчанию нет никаких ресурсов меню, поэтому при необходимости их нужно добавлять вручную. Так, для определения ресурсов меню в проекте нажмем правой кнопкой мыши в проекте на каталог res и далее в открывшемся списоке выберем пункт New -> Android Resource File :

Добавление ресурсов меню в Android Studio

Далее в появившемся окне укажем для имени файла название main_menu , а для поля Resource Type (тип ресурса) выберем Menu :

Создание ресурса меню в Android Studio

После этого в каталоге res будет создан подкаталог menu, в котором будет находиться файл main_menu.xml .

Определение меню в Android Studio и Java

По умолчанию этот файл определяет один пустой элемент menu:

Изменим содержимое файла, определив несколько пунктов:

Тег является корневым узлом файла и определяет меню, состоящее из одного или нескольких элементов и .

Элемент представляет объект MenuItem, которой является одним из элементов меню. Этот элемент может содержать внутренний подэлемент , с помощью которого создается подменю.

Элемент включает следующие атрибуты, которые определяют его внешний вид и поведение:

android:id : уникальный id элемента меню, который позволяет его опознать при выборе пользователем и найти через поиск ресурса по id

android:icon : ссылка на ресурс drawable, который задает изображение для элемента ( android:icon="@drawable/ic_help" )

android:title : ссылка на ресурс строки, содержащий заголовок элемента. По умолчанию имеет значение "Settings"

android:orderInCategory : порядок следования элемента в меню

Наполнение меню элементами

Мы определили меню с тремя элементами, но само определение элементов в файле еще не создает меню. Это всего лишь декларативное описание. Чтобы вывести его на экран, нам надо использовать его в классе Activity. Для этого надо переопределить метод onCreateOptionsMenu . Итак, перейдем к классу MainActivity и изменим его следующим образом:

Метод getMenuInflater возвращает объект MenuInflater , у которого вызывается метод inflate() . Этот метод в качестве первого параметра принимает ресурс, представляющий наше декларативное описание меню в xml, и наполняет им объект menu, переданный в качестве второго параметра.

Запустим приложение по умолчанию и нажмем на кнопку меню в правом верхнем углу:

Меню по умолчанию в Android

Обработка нажатий в меню

Если мы нажмем на любой из пунктов меню, то ничего не произойдет. Чтобы привязать к меню действия, нам надо переопределить в классе activity onOptionsItemSelected .

Для вывода выбранного элемена меню в файле activity_main.xml определим текстовое поле с >

И изменим класс MainActivity:

Чтобы понять, какой пункт меню выбран, вначале получаем его идентификатор int >. Затем пробегаемся в конструкции switch..case и выбираем нужный вариант и в зависимости от выбора производим определенные действия - в данном случае устанавливаем текст TextView.

Меню и onOptionsItemSelected в Android и Java

Стоит отметить, что в данном случае, если наша задача заключалась, чтобы просто в выводе текста выбранного пункта меню, то мы вместо конструкции switch просто могли написать так:

Программное создание меню

Кроме определения элементов меню в xml, можно также создать меню программным способом. Для добавления новых пунктов меню используется метод add() класса Menu .

В моем проекте я создал разные .java-файлы. Теперь я хочу создать консольное меню с параметрами для запуска этих классов отдельно.

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

pro.jvm

Сообщество разработчиков Java Scala Kotlin Groovy Clojure Чат для нач-их: @javastart Наш канал: @proJVM Вакансии: @jvmjobs @jvmjobschat Конфы: @jvmconf ⚠️ Оффтоп -> @flood ❌Переход на личности ❌Троллинг ❌Реклама ❌HH (вакансии) ❌Варез

Читайте также: