logo

Jak pobrać dane wejściowe od użytkownika w Javie?

Java udostępnia różne strumienie w swoim pakiecie I/O, który pomaga użytkownikowi wykonywać wszystkie operacje wejścia-wyjścia Java. Strumienie te obsługują wszystkie typy obiektów, typów danych, znaków, plików itp., aby w pełni wykonywać operacje we/wy. Dane wejściowe w Javie można wprowadzać za pomocą określonych metod wymienionych poniżej w artykule.

Metody wprowadzania danych w Javie

Tam są dwie drogi dzięki któremu możemy pobrać dane wejściowe Java od użytkownika lub z pliku



  • Klasa BufferedReader
  • Klasa skanera

1. Używanie klasy BufferedReader do wprowadzania ciągów znaków w Javie

Jest to prosta klasa służąca do odczytywania sekwencji znaków. Posiada prostą funkcję read, która odczytuje znak, kolejną funkcję read, która odczytuje tablicę znaków oraz funkcję readLine(), która odczytuje linię.

WejścieStreamReader() to funkcja, która konwertuje wejściowy strumień bajtów na strumień znaków, dzięki czemu można go odczytać, gdy BufferedReader oczekuje strumień znaków. BufferedReader może zgłaszać sprawdzone wyjątki.

Poniżej implementacja powyższego podejścia:



Jawa
// Java Program for taking user // input using BufferedReader Class import java.io.*; class GFG {  // Main Method  public static void main(String[] args)  throws IOException  {  // Creating BufferedReader Object  // InputStreamReader converts bytes to  // stream of character  BufferedReader bfn = new BufferedReader(  new InputStreamReader(System.in));  // String reading internally  String str = bfn.readLine();  // Integer reading internally  int it = Integer.parseInt(bfn.readLine());  // Printing String  System.out.println('Entered String : ' + str);  // Printing Integer  System.out.println('Entered Integer : ' + it);  } }>

Wyjście

wiosenny mvc
Mayank Solanki 888 Entered String : Mayank Solanki Entered Integer : 888>

Użycie klasy czytnika buforów do odczytania danych wejściowych

Poniżej implementacja powyższego podejścia:

Jawa
/*package whatever //do not write package name here */ import java.io.*; import java.io.BufferedReader; import java.io.InputStreamReader; class Easy {  public static void main(String[] args)  {  // creating the instance of class BufferedReader  BufferedReader reader = new BufferedReader(  new InputStreamReader(System.in));  String name;  try {  System.out.println('Enter your name');  name = reader.readLine(); // taking string input  System.out.println('Name=' + name);  }  catch (Exception e) {  }  } }>

Wyjście:



węzeł listy Java
Enter your name: Geeks Name=Geeks>

2. Używanie klasy Scanner do pobierania danych wejściowych w Javie

Jest to zaawansowana wersja BufferedReadera, która została dodana w późniejszych wersjach Javy. Skaner może odczytać sformatowane dane wejściowe. Ma różne funkcje dla różnych typów danych.

  • Skaner jest znacznie łatwiejszy do odczytania, ponieważ nie musimy pisać rzutów, ponieważ nie rzuca przez niego wyjątku.
  • Został dodany w późniejszych wersjach Javy
  • Zawiera predefiniowane funkcje do odczytu liczb całkowitych, znaków i innych typów danych.

Składnia klasy Scanner

Scanner scn = new Scanner(System.in);>

Importowanie klasy skanera

' Aby skorzystać ze skanera, musimy zaimportować klasę Scanner z pakietu util jako

import java.util.Scanner;>

Wbudowane funkcje skanera są następujące:

  • Liczba całkowita: następnyInt()
  • Platforma: następnyFloat()
  • Strunowy : następna() i następna linia()

Dlatego w przypadku Integer i String w Scannerze nie wymagamy analizowania, tak jak było to wymagane w BufferedReader.

Jawa
// Java Program to show how to take // input from user using Scanner Class import java.util.*; class GFG {  public static void main(String[] args)  {  // Scanner definition  Scanner scn = new Scanner(System.in);  // input is a string ( one word )  // read by next() function  String str1 = scn.next();  // print String  System.out.println('Entered String str1 : ' + str1);  // input is a String ( complete Sentence )  // read by nextLine()function  String str2 = scn.nextLine();  // print string  System.out.println('Entered String str2 : ' + str2);  // input is an Integer  // read by nextInt() function  int x = scn.nextInt();  // print integer  System.out.println('Entered Integer : ' + x);  // input is a floatingValue  // read by nextFloat() function  float f = scn.nextFloat();  // print floating value  System.out.println('Entered FloatValue : ' + f);  } }>

Wyjście :

Entered String str1 : Geeks Entered String str2 : Geeks For Geeks Entered Integer : 123 Entered FloatValue : 123.090>

Przykład 2:

Jawa
// Java Program to implement // Scanner Class to take input import java.io.*; import java.util.Scanner; // Driver Class class Easy {  // main function  public static void main(String[] args)  {  // creating the instance of class Scanner  Scanner obj = new Scanner(System.in);  String name;  int rollno;  float marks;  System.out.println('Enter your name');  // taking string input  name = obj.nextLine();  System.out.println('Enter your rollno');  // taking integer input  rollno = obj.nextInt();  System.out.println('Enter your marks');  // taking float input  marks = obj.nextFloat();    // printing the output  System.out.println('Name=' + name);  System.out.println('Rollno=' + rollno);  System.out.println('Marks=' + marks);  } }>

Wyjście

Enter your name Geeks  Enter your rollno 5 Enter your marks 84.60 Name=Geeks  Rollno=5 Marks=84.60>

Różnice między BufferedReader a skanerem

  • BufferedReader to bardzo prosty sposób odczytania danych wejściowych zwykle używanych do odczytu strumienia znaków. Daje przewagę nad skanerem, ponieważ jest szybszy niż skaner, ponieważ skaner wykonuje wiele przetwarzania końcowego w celu analizy danych wejściowych; jak widać w nextInt(), nextFloat()
  • BufferedReader jest bardziej elastyczny, ponieważ możemy określić rozmiar strumienia wejściowego do odczytania. (Ogólnie rzecz biorąc, to właśnie tam BufferedReader odczytuje większe dane wejściowe niż Scanner)
  • Te dwa czynniki wchodzą w grę, gdy czytamy większe dane wejściowe. Ogólnie rzecz biorąc, klasa skanera służy do wprowadzania danych wejściowych.
  • Preferowany jest BufferedReader, ponieważ jest zsynchronizowany. W przypadku wielu wątków jest to preferowane.
  • Dla przyzwoitych danych wejściowych i łatwej czytelności. Preferowany jest skaner zamiast BufferedReader.