Четене и записване на потребителски вход в Java

1. Въведение

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

Ще разгледаме няколко метода от класа Scanner за обработка на въвеждане и след това ще покажем няколко прости изхода с помощта на System.out .

И накрая, ще видим как да използваме класа Console , достъпен от Java 6, както за конзолен вход, така и за изход.

2. Четене от System.in

За първите ни примери ще използваме класа Scanner в пакета java.util, за да получим входните данни от System.in - „стандартния“ входен поток:

Scanner scanner = new Scanner(System.in);

Нека използваме метода nextLine () , за да прочетем цял ред на въвеждане като String и да преминем към следващия ред:

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.baeldung.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 () , за да отпечатаме String и да прекратим реда :

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 за четене и запис в конзолата.

За да получим обект на конзолата , ще извикаме 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: "); 

Можем също така да използвате конзолата класа да напише изход на конзолата, например, с помощта на ФОРМАТ () метод с String аргумент:

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

5. Заключение

В тази статия показахме как да използваме няколко Java класа за извършване на въвеждане и извеждане от потребителя на конзолата.

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