Articles

3 sposoby na odczytywanie danych wejściowych użytkownika z konsoli w Javie

Details Written by Nam Ha Minh Last Updated on 27 July 2019&&nbsp Print Email

W tym artykule, omawiamy trzy różne sposoby odczytywania danych wejściowych od użytkownika w środowisku wiersza poleceń (znanym również jako „konsola”). Każdy sposób jest dość łatwy w użyciu, a także ma swoje własne zalety i wady.

Odczytywanie danych wejściowych użytkownika przy użyciu klasy BufferedReader

Przez zawinięcie System.in (standardowego strumienia wejściowego) w InputStreamReader, który jest zawinięty w BufferedReader, możemy odczytywać dane wejściowe od użytkownika w linii poleceń. Oto przykład:

BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));System.out.print("Enter your name: ");String name = reader.readLine();System.out.println("Your name is: " + name);

W powyższym przykładzie, metoda readLine() odczytuje linię tekstu z wiersza poleceń.Advantages: Dane wejściowe są buforowane dla sprawnego odczytu.Wady: Kod zawijający jest trudny do zapamiętania.

Odczytywanie danych wejściowych użytkownika przy użyciu klasy Scanner

Głównym przeznaczeniem klasy Scanner (dostępnej od wersji Java 1.5) jest parsowanie typów prymitywnych i łańcuchów przy użyciu wyrażeń regularnych, jednak może być ona również użyta do odczytywania danych wejściowych od użytkownika w linii poleceń. Oto przykład:

Scanner scanner = new Scanner(System.in);System.out.print("Enter your nationality: ");String nationality = scanner.nextLine();System.out.print("Enter your age: ");int age = scanner.nextInt();

Zalety:

  • Wygodne metody do parsowania prymitywów (nextInt(), nextFloat(), …) z tokenizowanych danych wejściowych.
  • Wyrażenia regularne mogą być użyte do wyszukiwania tokenów.

Wady:

  • Metody odczytu nie są zsynchronizowane.

Dowiedz się więcej: Java Scanner Tutorial and Code Examples

Reading User’s Input using Console class

Klasa Console została wprowadzona w Javie 1.6, i stała się preferowanym sposobem na odczytywanie danych wejściowych użytkownika z linii poleceń. Dodatkowo, może być używana do odczytywania danych wejściowych typu hasło bez echa znaków wprowadzonych przez użytkownika; składnia łańcucha formatu może być również używana (jak System.out.printf()). Oto przykładowy wycinek kodu:

Console console = System.console();if (console == null) {System.out.println("No console: non-interactive mode!");System.exit(0);}System.out.print("Enter your username: ");String username = console.readLine();System.out.print("Enter your password: ");char password = console.readPassword();String passport = console.readLine("Enter your %d (th) passport number: ", 2);

Zalety:

  • Odczytywanie hasła bez echa wprowadzonych znaków.
  • Metody odczytu są zsynchronizowane.
  • Możliwość użycia składni ciągu formatów.

Wady:

  • Nie działa w środowisku nieinteraktywnym (np. w IDE).

Dowiedz się więcej: Java Console Input Output Examples

Java Czytanie wejścia użytkownika Przykładowy program

Dla Twojej wygody i celów referencyjnych, łączymy powyższy wycinek kodu w program demonstracyjny, którego kod źródłowy wygląda tak:

package net.codejava.io;import java.io.*;import java.util.*;public class UserInputConsoleDemo {public static void main(String args) {// using InputStreamReadertry {BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));System.out.print("Enter your name: ");String name = reader.readLine();System.out.println("Your name is: " + name);} catch (IOException ioe) {ioe.printStackTrace();}// using ScannerScanner scanner = new Scanner(System.in);System.out.print("Enter your nationality: ");String nationality = scanner.nextLine();System.out.println("Your nationality is: " + nationality);// using ConsoleConsole console = System.console();if (console == null) {System.out.println("No console: not in interactive mode!");System.exit(0);}System.out.print("Enter your username: ");String username = console.readLine();System.out.print("Enter your password: ");char password = console.readPassword();System.out.println("Thank you!");System.out.println("Your username is: " + username);System.out.println("Your password is: " + String.valueOf(password));// using Console with formatted promptString job = console.readLine("Enter your job: ");String passport = console.readLine("Enter your %d (th) passport number: ", 2);System.out.println("Your job is: " + job);System.out.println("Your passport number is: " + passport);}}

Obejrzyj wideo:

  • Console class Javadoc
  • I/O from the Command Line – The Java Tutorials
  • Scanner class Javadoc
  • BufferedReader class Javadoc

Relelated Tutorials:

  • Przykłady wejścia i wyjścia konsoli Java
  • Skaner Java – samouczek i przykłady kodu

Inne tutoriale Java File IO:

  • Jak czytać i zapisywać pliki tekstowe w Javie
  • Jak czytać i zapisywać pliki binarne w Javie
  • Java IO – Common File Operations Examples
  • Java IO – Przykłady operacji na plikach i katalogach. Common File and Directory Operations Examples
  • Java Serialization Basic Example
  • Understanding Java Externalization with Examples
  • How to compress files in ZIP format in Java
  • How to extract ZIP file in Java

About the Author:

Nam Ha Minh jest certyfikowanym programistą Java (SCJP i SCWCD). Zaczął programować w Javie w czasach Javy 1.4 i od tego czasu zakochał się w Javie. Zaprzyjaźnij się z nim na Facebooku i oglądaj jego filmy o Javie na YouTube.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *