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


Java позволяет осуществить ввод с клавиатуры различными способами.

Первый способ. Стандартный поток ввода (клавиатура) в Java представлен объектом – System.in. А стандартный поток вывода (дисплей) – объект System.out. Есть ещё стандартный поток для вывода ошибок – System.err.

import java.io.IOException;

public class Example2 {

public static void main(String[] args) {

char inChar;

System.out.println("Input simbol");

try {

inChar=(char)System.in.read();

System.out.println("You input "+inChar);

} catch (IOException e) {

System.out.println("Input ERROR");

}

}

}

Теперь разберем текст программы. Он у нас начинается с команды подключения библиотеки IOException:

import java.io.IOException;

Эта библиотека нужна для использования класса IOException –исключение ввода/вывода: если возникнет ошибка ввода вывода то будут выполнены команды после catch (которые заключены в операторные скобки). Без обработчика исключений в Java операции ввода быть не могут (как ввод с клавиатуры, так и из файла). Именно поэтому строка, где происходит ввод с клавиатуры, взят в try {...} catch (IOException e) {...}:

try {

inChar=(char)System.in.read();

System.out.println("You input "+inChar);

} catch (IOException e) {

System.out.println("Input ERROR");

}

если попытаться сделать просто без {...} catch (IOException e) {...}:

inChar=(char)System.in.read();

System.out.println("You input "+inChar);

то программа просто не скомпилируется.

Второй способ. Для ввода данных используется класс Scanner из библиотеки пакетов Java. Этот класс необходимо импортировать в той программе, где он будет использоваться. Это делается до начала открытого класса в коде программы. В классе есть методы для чтения очередного символа заданного типа со стандартного потока ввода, а также для проверки существования такого символа.

Для работы с потоком ввода необходимо создать объект класса Scanner, при создании указав, с каким потоком ввода он будет связан.

import java.util.Scanner; // импортируем класс

public class Main {

public static void main(String[] args) {

Scanner sc = new Scanner(System.in); // создаём объект класса Scanner

int i = 2;

System.out.print("Введите целое число: ");

if(sc.hasNextInt()) { // возвращает истинну если с потока ввода можно считать целое число

i = sc.nextInt(); // считывает целое число с потока ввода и сохраняем в переменную

System.out.println(i*2);

} else {

System.out.println("Вы ввели не целое число");

}

}

}

Метод hasNextDouble(), применённый объекту класса Scanner, проверяет, можно ли считать с потока ввода вещественное число типа double, а метод nextDouble() – считывает его. Если попытаться считать значение без предварительной проверки, то во время исполнения программы можно получить ошибку (отладчик заранее такую ошибку не обнаружит). Например, попробуйте в представленной далее программе ввести какое-то вещественное число:

import java.util.Scanner;

public class Main {

public static void main(String[] args) {

Scanner sc = new Scanner(System.in);

double i = sc.nextDouble(); // если ввести букву s, то случится ошибка во время исполнения

System.out.println(i/3);

}

}

Имеется также метод nextLine(), позволяющий считывать целую последовательность символов, т.е. строку, а, значит, полученное через этот метод значение нужно сохранять в объекте класса String. В следующем примере создаётся два таких объекта, потом в них поочерёдно записывается ввод пользователя, а далее на экран выводится одна строка, полученная объединением введённых последовательностей символов.

import java.util.Scanner;

public class Main {

public static void main(String[] args) {

Scanner sc = new Scanner(System.in);

String s1, s2;

s1 = sc.nextLine();

s2 = sc.nextLine();

System.out.println(s1 + s2);

}

}

Существует и метод hasNext(), проверяющий остались ли в потоке ввода какие-то символы.

Java класс Math

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

Класс Math содержит различные математически функции. Некоторые из них:

Math.abs(n) – возвращает модуль числа n.

Math.round(n) – возвращает целое число, ближайшее к вещественному числу n (округляет n).

Math.ceil(n) – возвращает ближайшее к числу n справа число с нулевой дробной частью (например, Math.ceil(3.4) в результате вернёт 4.0).

Math.cos(n), Math.sin(n), Math.tan(n) – тригонометрические функции sin, cos и tg от аргумента n, указанного в радианах.

Math.acos(n), Math.asin(n), Math.atan(n) – обратные тригонометрические функции, возвращают угол в радианах.

Math.toDegrees(n) – возвращает градусную меру угла в n радианов.

Math.toRadians(n) – возвращает радианную меру угла в n градусов.

Math.sqrt(n) – возвращает квадратный корень из n.

Math.pow(n, b) – возвращает значение степенной функции n в степени b, основание и показатель степени могут быть вещественными.

Math.log(n) – возвращает значение натурального логарифма числа n.

Math.log10(n) – возвращает значение десятичного логарифма числа n.

Все перечисленные функции принимают вещественные аргументы, а тип возвращаемого значения зависит от типа аргумента и от самой функции.

Кроме функций в рассматриваемом классе имеются две часто используемых константы:

Math.PI – число «пи», с точностью в 15 десятичных знаков.

Math.E – число Неппера (основание экспоненциальной функции), с точностью в 15 десятичных знаков.

Примеры использования:

System.out.println(Math.abs(-2.33)); // выведет 2.33

System.out.println(Math.round(Math.PI)); // выведет 3

System.out.println(Math.round(9.5)); // выведет 10

System.out.println(Math.round(9.5-0.001)); // выведет 9

System.out.println(Math.ceil(9.4)); // выведет 10.0

double c = Math.sqrt(3*3 + 4*4);

System.out.println(c); // выведет гипотенузу треугольника с катетами 3 и 4

double s1 = Math.cos(Math.toRadians(60));

System.out.println(s1); // выведет косинус угла в 60 градусов



Дата добавления: 2017-01-26; просмотров: 2770;


Поиск по сайту:

Воспользовавшись поиском можно найти нужную информацию на сайте.

Поделитесь с друзьями:

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.013 сек.