Java формат ввода числа

Java формат ввода числа

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

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

Для создания потока вывода в класс System определен объект out . В этом объекте определен метод println , который позволяет вывести на консоль некоторое значение с последующим переводом курсора консоли на следующую строку. Например:

В метод println передается любое значение, как правило, строка, которое надо вывести на консоль. И в данном случае мы получим следующий вывод:

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

Консольный вывод данной программы:

Но с помощью метода System.out.print также можно осуществить перевод каретки на следующую строку. Для этого надо использовать escape-последовательность \n:

System.out.print("Hello world \n");

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

public class Program < public static void main(String[] args) < int x=5; int y=6; System.out.println("x=" + x + "; y console"> 
x=5; y=6

Но в Java есть также функция для форматированного вывода, унаследованная от языка С: System.out.printf() . С ее помощью мы можем переписать предыдущий пример следующим образом:

int x=5; int y=6; System.out.printf("x=%d; y=%d \n", x, y);

В данном случае символы %d обозначают спецификатор, вместо которого подставляет один из аргументов. Спецификаторов и соответствующих им аргументов может быть множество. В данном случае у нас только два аргумента, поэтому вместо первого %d подставляет значение переменной x, а вместо второго - значение переменной y. Сама буква d означает, что данный спецификатор будет использоваться для вывода целочисленных значений.

Кроме спецификатора %d мы можем использовать еще ряд спецификаторов для других типов данных:

  • %x : для вывода шестнадцатеричных чисел
  • %f : для вывода чисел с плавающей точкой
  • %e : для вывода чисел в экспоненциальной форме, например, 1.3e+01
  • %c : для вывода одиночного символа
  • %s : для вывода строковых значений

При выводе чисел с плавающей точкой мы можем указать количество знаков после запятой, для этого используем спецификатор на %.2f , где .2 указывает, что после запятой будет два знака. В итоге мы получим следующий вывод:

Name: Tom Age: 30 Height: 1,70

Ввод с консоли

Для получения ввода с консоли в классе System определен объект in . Однако непосредственно через объект System.in не очень удобно работать, поэтому, как правило, используют класс Scanner , который, в свою очередь использует System.in . Например, напишем маленькую программу, которая осуществляет ввод чисел:

import java.util.Scanner; public class Program < public static void main(String[] args) < Scanner in = new Scanner(System.in); System.out.print("Input a number: "); int num = in.nextInt(); System.out.printf("Your number: %d \n", num); in.close(); >>

Так как класс Scanner находится в пакете java.util , то мы вначале его импортируем с помощью инструкции import java.util.Scanner .

Для создания самого объекта Scanner в его конструктор передается объект System.in . После этого мы можем получать вводимые значения. Например, в данном случае вначале выводим приглашение к вводу и затем получаем вводимое число в переменную num.

Чтобы получить введенное число, используется метод in.nextInt(); , который возвращает введенное с клавиатуры целочисленное значение.

Input a number: 5 Your number: 5

Класс Scanner имеет еще ряд методов, которые позволяют получить введенные пользователем значения:

  • next() : считывает введенную строку до первого пробела
  • nextLine() : считывает всю введенную строку
  • nextInt() : считывает введенное число int
  • nextDouble() : считывает введенное число double
  • nextBoolean() : считывает значение boolean
  • nextByte() : считывает введенное число byte
  • nextFloat() : считывает введенное число float
  • nextShort() : считывает введенное число short

То есть для ввода значений каждого примитивного типа в классе Scanner определен свой метод.

Например, создадим программу для ввода информации о человеке:

import java.util.Scanner; public class Program < public static void main(String[] args) < Scanner in = new Scanner(System.in); System.out.print("Input name: "); String name = in.nextLine(); System.out.print("Input age: "); int age = in.nextInt(); System.out.print("Input height: "); float height = in.nextFloat(); System.out.printf("Name: %s Age: %d Height: %.2f \n", name, age, height); in.close(); >>

Здесь последовательно вводятся данные типов String, int, float и потом все введенные данные вместе выводятся на консоль. Пример работы программы:

Input name: Tom Input age: 34 Input height: 1,7 Name: Tom Age: 34 Height: 1,70

Обратите внимание, что для ввода значения типа float (то же самое относится к типу double) применяется число "1,7", где разделителем является запятая, а не "1.7", где разделителем является точка. В данном случае все зависит от текущей языковой локализации системы. В моем случае русскоязычная локализация, соответственно вводить необходимо числа, где разделителем является запятая. То же самое касается многих других локализаций, например, немецкой, французской и т.д., где применяется запятая.

Источник

Ввод/вывод информации

Метод вывода в консоль System.out.println (x), где x - переменная, содержащая число, выводит максимальное количество ненулевых цифр числа x, заданных типом. Например:

double d = 99; System.out.println (d / 47);

Данная точность вывода иногда бывает избыточной для представления результатов вычислений. Для того, чтобы числа можно было представить в требуемом формате в Java SE применяется метод System.out.println (). Например последовательность команд

double d = 99; System.out.printf ("99 / 47 = %.2f", d / 47);

Обычный текст выводится на экран без изменений. Значение числа отображается согласно спецификации преобразования данных. Спецификация преобразования начинается с символа '%' и заканчивается спецификатором. Некоторые спецификаторы указаны в следующей таблице:

Спецификатор Тип значения
d целое десятичное число
f десятичная форма вещественного числа
e экспоненциальная форма вещественного числа
s строка
c символ
b boolean

Для представления числовых значений бывает полезным использовать в спецификации преобразования указание ширины поля и точности. Ширина поля и точность последовательно указываются между '%' и спецификатором и отделяются друг от друга точкой.

Ширина поля - целое положительное число, определяющее длину (в символах экрана) представления выводимого значения (позиции на знак числа и десятичную точку входят в ширину поля вывода).

Точность - целое положительное число, определяющее количество цифр в дробной части внешнего представления числа (с фиксированной точкой) или его мантиссы (при использовании формы с плавающей точкой).

Ввод данных с клавиатуры, Scanner

Для ввода данных с клавиатуры необходимо создать объект, который будет использоваться для чтения из стандартного потока ввода. Этот объект имеет тип Scanner, описанный в пакете java.util. Класс необходимо импортировать в программу, использующую команды ввода данных из какого-либо потока.

Для ввода целых чисел используется метод nextInt(), для дробных - nextDouble().

Блокирование ввода и вывода

Для блокирования ввода/вывода необходимо закрыть входные и выходные потоки.

Источник

Читайте также:  Connect pages in php
Оцените статью