Консольный ввод с помощью класса Scanner
Описанный способ реализации потока ввода достаточно громоздок и не очень удобен. Начиная с версии JDK 5, в Java появилась возможность реализовать консольный ввод-вывод намного проще — через класс Scanner. Для работы с этим классом необходимо включить в заголовок файла программы инструкцию import java.util.*, то есть подключить (импортировать) пакет java.util.
Общая схема реализации процесса введения данных с консоли посредством класса Scanner такова: на основе стандартного потока ввода System.in создается объект класса Scanner, через который и осуществляется консольный ввод. При этом полезными могут оказаться методы класса Scanner, среди которых имеет смысл выделить следующие:
nextLine() — считывание текстовой строки;
next() — считывание одного слова;
nextInt() — считывание целого числа;
nextDouble() — считывание действительного числа.
Пример использования класса Scanner и его методов для реализации в программе консольного ввода приведен в листинге 3.
Листинг 3.Консольный ввод на основе класса Scanner
// Импорт пакета:
import java.util.*;
class MyNewScanner{
public static void main(String args[]){
// Объект класса Scanner создается на основе объекта System.in:
Scanner inp=new Scanner(System.in);
// Текстовое поле (имя):
String name;
// Числовое поле (возраст):
int age;
// Задаем вопрос:
System.out.println("Как Вас зовут?");
// Считываем текст (имя):
name=inp.nextLine();
// Приветствие:
System.out.println("Добрый день, "+name+"!");
// Задаем вопрос:
System.out.println("Сколько Вам лет?");
// Считываем число (возраст):
age=inp.nextInt();
// Вывод сообщения:
System.out.println(name+", Вам "+age+" лет!");
}}
Инструкцией import java.util.* импортируется пакет java.util для работы с классом Scanner. В главном методе программы командой Scanner inp=new Scanner(System.in) на основе объекта стандартного ввода System.in создается объект inp класса Scanner. С помощью объекта inp в данной программе реализуется консольный ввод. В частности, с клавиатуры считываются имя и возраст пользователя. Для записи текстового значения имени пользователя объявляется поле name класса String. Для записи возраста объявляется целочисленное поле age.
После вывода командой System.out.println("Как Вас зовут?") вопроса об имени пользователя введенный пользователем текст считывается командой name=inp.nextLine(). При этом применяется метод nextLine(), вызываемый из объекта inp, а результат записывается в поле name. Командой System.out.println("Добрый день, "+name+"!") выводится приветствие, причем в этом приветствии указано считанное на предыдущем этапе имя пользователя. Затем командой System.out.println("Сколько Вам лет?") выводится вопрос о возрасте пользователя. Введенное пользователем значение считывается как число командой age=inp.nextInt(), и результат заносится в поле age. Это считывание выполняется вызовом метода nextInt() из объекта inp. Наконец, командой System.out.println(name+", Вам "+age+" лет!") выводится информация о возрасте пользователя с указанным именем. Результат выполнения программы может иметь следующий вид (жирным шрифтом выделен ввод пользователя):
Как Вас зовут?
Алексей Васильев
Добрый день, Алексей Васильев!
Сколько Вам лет?
Алексей Васильев, Вам 35 лет!
Если сравнивать консольный ввод на основе объекта класса Scanner с тем способом, что рассматривался в предыдущем разделе, то сравнение явно не в пользу последнего.
Дата добавления: 2016-06-22; просмотров: 2074;