Odczyt i zapis danych wejściowych użytkownika w języku Java

1. Wstęp

W tym krótkim samouczku pokażemy kilka sposobów używania konsoli do wprowadzania i wyprowadzania danych przez użytkownika w języku Java .

Przyjrzymy się kilku metodom klasy Scanner do obsługi danych wejściowych, a następnie pokażemy kilka prostych danych wyjściowych za pomocą System.out .

Na koniec zobaczymy, jak używać klasy Console , dostępnej od wersji Java 6, zarówno dla danych wejściowych, jak i wyjściowych konsoli.

2. Czytanie z System.in

Dla naszych pierwszych przykładach będziemy używać skanera klasa w java.util pakiet aby uzyskać wejście od System.in - „standardowego” strumienia wejściowego:

Scanner scanner = new Scanner(System.in);

Użyjmy metody nextLine () , aby odczytać cały wiersz danych wejściowych jako ciąg znaków i przejść do następnego wiersza:

String nameSurname = scanner.nextLine();

Możemy również użyć metody next () , aby pobrać następny token wejściowy ze strumienia:

String gender = scanner.next();

Jeśli spodziewamy się liczbowych danych wejściowych, możemy użyć nextInt (), aby uzyskać następne dane wejściowe jako prymityw typu int i podobnie, możemy użyć nextDouble (), aby uzyskać zmienną typu double :

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

Scanner klasy oferuje również hasNext_Prefix () metod, które zwracają prawda jeśli następny znak może być interpretowane jako odpowiadającego typu danych .

Na przykład możemy użyć hasNextInt ()metoda, aby sprawdzić, czy następny token można zinterpretować jako liczbę całkowitą:

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

Możemy również użyć metody hasNext (Pattern pattern) , aby sprawdzić, czy następujący token wejściowy pasuje do wzorca :

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

Oprócz używania klasy Scanner , możemy również użyć Input StreamReader z System.in, aby uzyskać dane wejściowe z konsoli :

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

Następnie możemy odczytać dane wejściowe i przeanalizować je na liczbę całkowitą:

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

3. Pisanie do System.out

Jako wyjście konsoli możemy użyć System.out - instancji klasy PrintStream , która jest typem OutputStream .

W naszym przykładzie użyjemy danych wyjściowych konsoli, aby zapewnić monit o wprowadzenie danych przez użytkownika i wyświetlić ostateczną wiadomość użytkownikowi.

Użyjmy metody println () , aby wydrukować String i zakończyć linię :

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

Alternatywnie możemy skorzystać z metody print () , która działa podobnie do println () , ale bez przerywania linii :

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

4. Używanie klasy konsoli do wprowadzania i wyprowadzania

W JDK 6 i nowszych możemy używać klasy Console z pakietu java.io do odczytu i zapisu na konsoli.

Aby uzyskać obiekt Console , wywołamy System.console () :

Console console = System.console();

Następnie użyjmy metody readLine () klasy Console, aby napisać wiersz do konsoli, a następnie odczytać wiersz z konsoli :

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

Jeśli potrzebujemy odczytać poufne informacje, takie jak hasło, możemy użyć metody readPassword () , aby zapytać użytkownika o hasło i odczytać hasło z konsoli z wyłączonym echo :

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

Możemy również korzystać z konsoli klasę do wyjścia zapisu do konsoli, na przykład, za pomocą printf () metody z String argumentu:

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

5. Wniosek

W tym artykule pokazaliśmy, jak używać kilku klas Java do wykonywania operacji wejścia i wyjścia użytkownika konsoli.

Jak zawsze, przykłady kodu z tego samouczka są udostępniane w witrynie GitHub.