Вывод и ввод данных в консоль Java
Консоль (console) в Java обеспечивает простое и удобное взаимодействия с пользователем. С помощью консоли можно выводить какую-нибудь информацию либо, напротив, используя консоль, считывать данные. В этой статье будет рассказано о том, как осуществляется ввод и вывод данных в консоли Java.
Чтобы обеспечивать взаимодействие с консолью, в языке программирования Java используют класс System.
Вывод на консоль в Java
Чтобы создать потока вывода в вышеупомянутый класс System, вам понадобится специальный объект out. В нём определен метод println, обеспечивающий вывод значения на консоль и перевод курсора консоли на другую строку.
Рассмотрим практический пример с Hello world:
Что здесь происходит? В метод println осуществляется передача значения (в нашем случае это строка), которое пользователь желает вывести в консоль Java. Консольный вывод данных в Джава будет следующий:
Выполнять перевод строки не обязательно. Если необходимость в этом отсутствует, применяют метод System.out.print() . Он аналогичен println, но перевод каретки на следующую строку не выполняется.
Однако никто не мешает, используя System.out.print, всё же выполнить перенос на следующую строку. Как вариант — использование \n:
System.out.print("Привет, мир! \n");Также есть возможность подставить в строку Ява данные, которые объявлены в переменных. Вот, как это реализуется:
Ещё в Java существует функция, предназначенная для форматирования вывода в консоли, — System.out.printf() . При использовании со спецификаторами, она позволяет добиться нужного формата вывода.
Спецификаторы: • %d — для вывода в консоль целочисленных значений; • %x — для 16-ричных чисел; • %f — выводятся числа с плавающей точкой; • %e — для чисел в экспоненциальной форме (1.3e+01); • %c — вывод в консоль одиночного символа; • %s — вывод в консоль строковых значений.
Рассмотрим, как это функционирует на практике:
Когда осуществляется вывод в консоль Java значений с плавающей точкой, есть возможность задать количество знаков после запятой. Спецификатор %.2f (точнее, «.2») определяет, что будет 2 знака после запятой. Вывод в консоль Java будет следующим:
Name: Bob Age: 40 Height: 1.80Ввод с консоли Java или как ввести данные с консоли Джавы
Чтобы обеспечить ввод с консоли Java, в классе System есть объект in. Именно через объект System.in работать не очень удобно, поэтому часто применяют класс Scanner. Он уже, в свою очередь, как раз таки и применяет System.in.
Рассмотрим практический пример:
import java.util.Scanner; public class Main < public static void main(String[] args) < Scanner in = new Scanner(System.in); System.out.print("Введите любой номер: "); int num = in.nextInt(); System.out.printf("Ваш номер: %d \n", num); in.close(); >>Сам по себе класс Scanner хранится в пакете java.util, поэтому в начале кода мы выполняем его импорт посредством команды import java.util.Scanner.
Для создания непосредственно объекта Scanner в его конструктор осуществляется передача объекта System.in. Далее можно получать значения. В нашей мини-программе сначала выводится просьба ввести номер, а потом введённое пользователем число помещается в переменную num (для получения введённого значения задействуется метод in.nextInt() , возвращающий набранное на клавиатуре целочисленное значение.
Лучше всего попробовать работу этой программы с помощью одного из многочисленных онлайн-компиляторов.
Работать она будет простейшим образом: 1. Сначала вы увидите сообщение в консоли «Введите любой номер:». 2. После ввода числа (пускай это будет 8) в консоли появится второе сообщение — «Ваш номер: 8».
Для класса Scanner предусмотрены и другие методы: • next() — для считывания введённой строки до первого пробела; • nextLine() — для всей введённой строки; • nextInt() — считывает введённое число int; • nextDouble() — для double; • nextBoolean() — для boolean; • nextByte() — для byte; • nextFloat() — для float; • nextShort() — для short.
Давайте напишем простую программу, обеспечивающую ввод информационных данных о человеке в консоль Java:
import java.util.Scanner; public class Main < public static void main(String[] args) < Scanner in = new Scanner(System.in); System.out.print("Введите имя: "); String name = in.nextLine(); System.out.print("Введите возраст: "); int age = in.nextInt(); System.out.print("Введите вес: "); float height = in.nextFloat(); System.out.printf("Name: %s Age: %d Height: %.1f \n", name, age, height); in.close(); >>В этой программке пользователь последовательно вводит данные разных типов: String, int и float. Потом вся информация выводится в консоль Java:
Введите имя: Андрей Введите возраст: 39 Введите вес: 89 Name: Андрей Age: 39 Height: 89.0Вот и всё. Это базовые вещи, если же вас интересуют более продвинутые знания, записывайтесь на курс OTUS в Москве:
Вывести строковое представление объекта в Java
В этом посте мы обсудим, как напечатать строковое представление объекта в Java.
В предыдущем посте мы обсуждали, как переопределить toString() метод в Java для печати строкового представления объекта. В этом посте представлен обзор некоторых других альтернатив для достижения этого без необходимости переопределять toString() метод.
1. Использование Apache Commons Lang
Библиотека Apache Commons Lang предоставляет ToStringBuilder.reflectionToString() метод, использующий отражение для создания строкового представления указанного объекта.
результат:
[email protected][continent=North America,name=United States,population=4000000]Обратите внимание, что этот метод может не работать под управлением менеджера безопасности, поскольку он использует AccessibleObject.setAccessible() изменить видимость частных полей в классе. Кроме того, вы также можете использовать ReflectionToStringBuilder.toString() метод, который также использует отражение для доступа к закрытым полям.
результат:
[email protected][continent=North America,name=United States,population=4000000]2. Использование проекта Ломбок
С Проект Ломбок, вы можете аннотировать любой класс с помощью @ToString аннотацию, чтобы получить реализацию toString() метод, состоящий из имени вашего класса с каждым полем, разделенным запятыми, если не указано иное.
Реализация по умолчанию печатает все нестатические поля. Вы можете аннотировать поле с помощью @ToString.Exclude чтобы пропустить это. Кроме того, вы можете указать точные поля, которые будут включены в строковое представление, с помощью @ToString.Include и аннотировать класс с помощью @ToString(onlyExplicitlyIncluded = true) .
Java вывести содержимое объекта
Задача на проценты. При решении " i * 1.1 " не пройдет тест с double например для 100 * 1.1 = 110 Будет примерно так: Expected :110.0 Actual :110.00000000000001 А вот для " i + (i / 100.0 * 10.0) " результаты ок для кейсов (исходное число, ожидаемый результат): (9, 9.9), (10, 11.0), (100, 110.0), (-100, -110.0), (0, 0.0)
double percent = (i * 10) / 100; Так IDE тоже компилирует результат, но по условию возвращение такого вида - return 123 * 435; То есть, необходимо первым делом перевести 10% сразу же в дробное число: 0.1 - увеличение на 10% 1.1 - увеличение на 110% Каждая десятая часть от 1 = 10%.
— Стандартный метод toString() класса Object возвращает строку, состоящую из имени класса и адреса объекта в памяти (в шестнадцатеричном виде)
чего если что, я из будущего, и там эта тема разбирается подробнее. эта формулировка очень сомнительная вообще-то это хешкод там в шестнадцатеричном виде
JavaRush — это интерактивный онлайн-курс по изучению Java-программирования c нуля. Он содержит 1200 практических задач с проверкой решения в один клик, необходимый минимум теории по основам Java и мотивирующие фишки, которые помогут пройти курс до конца: игры, опросы, интересные проекты и статьи об эффективном обучении и карьере Java‑девелопера.
Этот веб-сайт использует данные cookie, чтобы настроить персонально под вас работу сервиса. Используя веб-сайт, вы даете согласие на применение данных cookie. Больше подробностей — в нашем Пользовательском соглашении.