Перейти к основному содержимому

Чтение и запись пользовательского ввода в Java

· 3 мин. чтения

1. Введение

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

Мы рассмотрим несколько методов класса Scanner для обработки ввода, а затем покажем простой вывод с помощью System.out .

Наконец, мы увидим, как использовать класс Console , доступный начиная с Java 6, как для консольного ввода, так и для вывода.

2. Чтение из System.in

В наших первых примерах мы будем использовать класс Scanner в пакете java.util для получения входных данных из System.in — «стандартного» входного потока:

Scanner scanner = new Scanner(System.in);

Давайте воспользуемся методом nextLine() для чтения всей строки ввода в виде строки и перехода к следующей строке:

String nameSurname = scanner.nextLine();

Мы также можем использовать метод next() для получения следующего входного токена из потока:

String gender = scanner.next();

Если мы ожидаем ввода числовых значений, мы можем использовать nextInt() для получения следующего ввода в виде примитива типа int , и, аналогично, мы можем использовать nextDouble() для получения переменной типа double :

int age = scanner.nextInt();
double height = scanner.nextDouble();

Класс Scanner также предлагает методы hasNext_Prefix() , которые возвращают true , если следующий токен можно интерпретировать как соответствующий тип данных .

Например, мы можем использовать метод hasNextInt() `` , чтобы проверить, можно ли интерпретировать следующий токен как целое число:

while (scanner.hasNextInt()) {
int nmbr = scanner.nextInt();
//...
}

Кроме того, мы можем использовать метод hasNext(Pattern pattern) , чтобы проверить, соответствует ли следующий входной токен шаблону :

if (scanner.hasNext(Pattern.compile("www.foreach.com"))) {         
//...
}

Помимо использования класса Scanner , мы также можем использовать Input StreamReader с System.in для получения ввода с консоли :

BufferedReader buffReader = new BufferedReader(new InputStreamReader(System.in));

И затем мы можем прочитать ввод и проанализировать его до целого числа:

int i = Integer.parseInt(buffReader.readLine());

3. Запись в System.out

Для вывода на консоль мы можем использовать System.out — экземпляр класса PrintStream , который является типом OutputStream .

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

Давайте используем метод println() для печати строки и завершения строки :

System.out.println("Please enter your name and surname: ");

В качестве альтернативы мы можем использовать метод print() , который работает аналогично println() , но без завершения строки :

System.out.print("Have a good");
System.out.print(" one!");

4. Использование класса консоли для ввода и вывода

В JDK 6 и более поздних версиях мы можем использовать класс Console из пакета java.io для чтения и записи в консоль.

Чтобы получить объект Console , мы вызовем System.console() :

Console console = System.console();

Далее воспользуемся методом readLine() класса Console , чтобы записать строку в консоль, а затем прочитать строку из консоли :

String progLanguauge = console.readLine("Enter your favourite programming language: ");

Если нам нужно прочитать конфиденциальную информацию, такую как пароль, мы можем использовать метод readPassword() , чтобы запросить у пользователя пароль и прочитать пароль из консоли с отключенным эхом :

char[] pass = console.readPassword("To finish, enter password: ");

Мы также можем использовать класс Console для записи вывода в консоль, например, используя метод printf () с аргументом String :

console.printf(progLanguauge + " is very interesting!");

5. Вывод

В этой статье мы показали, как использовать несколько классов Java для выполнения пользовательского ввода и вывода на консоли.

Как всегда, примеры кода из этого руководства доступны на GitHub .