Сдам Сам

ПОЛЕЗНОЕ


КАТЕГОРИИ







Консольный ввод/вывод в Java





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

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

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

  publicclassProgram {   publicstaticvoidmain(String[] args) {   System.out.println("Hello world!"); System.out.println("Bye world..."); } }

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

Hello world!Bye world...

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

  publicclassProgram {   publicstaticvoidmain(String[] args) {   System.out.print("Hello world!"); System.out.print("Bye world..."); } }

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

Hello world!Bye world...

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

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

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

  publicclassProgram {   publicstaticvoidmain(String[] args) {   intx=5; inty=6; System.out.println("x="+ x + "; y="+ y); } }

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

x=5; y=6

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

  intx=5; inty=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: для вывода строковых значений

Например:

  publicclassProgram {   publicstaticvoidmain(String[] args) {   String name = "Tom"; intage = 30; floatheight = 1.7f;   System.out.printf("Name: %s Age: %d Height: %.2f \n", name, age, height); } }

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

Name: Tom Age: 30 Height: 1,70

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

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

  importjava.util.Scanner;   publicclassProgram {   publicstaticvoidmain(String[] args) {   Scanner in = newScanner(System.in); System.out.print("Input a number: "); intnum = in.nextInt();   System.out.printf("Your number: %d \n", num); } }

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

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

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

Пример работы программы:

Input a number: 5Your number: 5

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

· next(): считывает введенную строку до первого пробела

· nextLine(): считывает всю введенную строку

· nextInt(): считывает введенное число int

· nextDouble(): считывает введенное число double

· nextBoolean(): считывает значение boolean

· nextByte(): считывает введенное число byte

· nextFloat(): считывает введенное число float

· nextShort(): считывает введенное число short

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

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

  importjava.util.Scanner;   publicclassProgram {   publicstaticvoidmain(String[] args) {   Scanner in = newScanner(System.in); System.out.print("Input name: "); String name = in.nextLine(); System.out.print("Input age: "); intage = in.nextInt(); System.out.print("Input height: "); floatheight = in.nextFloat(); System.out.printf("Name: %s Age: %d Height: %.2f \n", name, age, height); } }

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

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

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

Арифметические операции

Большинство операций в Java аналогичны тем, которые применяются в других си-подобных языках. Есть унарные операции (выполняются над одним операндом), бинарные - над двумя операндами, а также тернарные - выполняются над тремя операндами. Операндом является переменная или значение (например, число), участвующее в операции. Рассмотрим все виды операций.

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

· +

операция сложения двух чисел:

  inta = 10; intb = 7; intc = a + b; // 17 intd = 4+ b; // 11

· -

операция вычитания двух чисел:

  inta = 10; intb = 7; intc = a - b; // 3 intd = 4- a; // -6

· *

операция умножения двух чисел

  inta = 10; intb = 7; intc = a * b; // 70 intd = b * 5; // 35

· /

операция деления двух чисел:

  inta = 20; intb = 5; intc = a / b; // 4 doubled = 22.5/ 4.5; // 5.0

При делении стоит учитывать, так как если в операции участвуют два целых числа, то результат деления будет округляться до целого числа, даже если результат присваивается переменной float или double:

  doublek = 10/ 4; // 2 System.out.println(k);

Чтобы результат представлял числос плавающей точкой, один из операндов также должен представлять число с плавающей точкой:

  doublek = 10.0/ 4; // 2.5 System.out.println(k);

· %

получение остатка от деления двух чисел:

  inta = 33; intb = 5; intc = a % b; // 3 intd = 22% 4; // 2 (22 - 4*5 = 2)

Также есть две унарные арифметические операции, которые производятся над одним числом: ++ (инкремент) и -- (декремент). Каждая из операций имеет две разновидности: префиксная и постфиксная:

· ++ (префиксный инкремент)

Предполагает увеличение переменной на единицу, например, z=++y (вначале значение переменной y увеличивается на 1, а затем ее значение присваивается переменной z)

  inta = 8; intb = ++a; System.out.println(a); // 9 System.out.println(b); // 9

· ++ (постфиксный инкремент)

Также представляет увеличение переменной на единицу, например, z=y++ (вначале значение переменной y присваивается переменной z, а потом значение переменной y увеличивается на 1)

  inta = 8; intb = a++; System.out.println(a); // 9 System.out.println(b); // 8

· -- (префиксный декремент)

уменьшение переменной на единицу, например, z=--y (вначале значение переменной y уменьшается на 1, а потом ее значение присваивается переменной z)

  inta = 8; intb = --a; System.out.println(a); // 7 System.out.println(b); // 7

· -- (постфиксный декремент)

z=y-- (сначала значение переменной y присваивается переменной z, а затем значение переменной y уменьшается на 1)

  inta = 8; intb = a--; System.out.println(a); // 7 System.out.println(b); // 8






Что будет с Землей, если ось ее сместится на 6666 км? Что будет с Землей? - задался я вопросом...

ЧТО ПРОИСХОДИТ ВО ВЗРОСЛОЙ ЖИЗНИ? Если вы все еще «неправильно» связаны с матерью, вы избегаете отделения и независимого взрослого существования...

Система охраняемых территорий в США Изучение особо охраняемых природных территорий(ООПТ) США представляет особый интерес по многим причинам...

Что вызывает тренды на фондовых и товарных рынках Объяснение теории грузового поезда Первые 17 лет моих рыночных исследований сводились к попыткам вычис­лить, когда этот...





Не нашли то, что искали? Воспользуйтесь поиском гугл на сайте:


©2015- 2024 zdamsam.ru Размещенные материалы защищены законодательством РФ.