Kaip gauti vartotojo įvestį „Java“?

„Java“ pateikia įvairius srautus su savo įvesties / išvesties paketu, kuris padeda vartotojui atlikti visas „Java“ įvesties-išvesties operacijas. Šie srautai palaiko visų tipų objektus, duomenų tipus, simbolius, failus ir tt, kad būtų galima visiškai atlikti įvesties / išvesties operacijas. „Java“ įvestis gali būti atliekama naudojant tam tikrus toliau straipsnyje nurodytus metodus.

„Java“ įvesties metodai

Yra du keliai kuriuo galime paimti Java įvestį iš vartotojo arba iš failo

  • BufferedReader klasė
  • Skaitytuvo klasė

1. BufferedReader klasės naudojimas eilutės įvedimui Java

Tai paprasta klasė, naudojama simbolių sekai skaityti. Jis turi paprastą skaitymo funkciją, kuri nuskaito simbolį, kitą skaitymo funkciją, kuri nuskaito simbolių masyvą, ir readLine() funkciją, kuri nuskaito eilutę.

InputStreamReader() yra funkcija, kuri konvertuoja įvesties baitų srautą į simbolių srautą, kad jį būtų galima nuskaityti taip, kaip BufferedReader tikisi veikėjų srautas. BufferedReader gali mesti pažymėtas išimtis.

Toliau pateikiamas pirmiau minėto metodo įgyvendinimas:

Java
// 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);  } } 

Išvestis

Mayank Solanki 888 Entered String : Mayank Solanki Entered Integer : 888 

Buferinio skaitytuvo klasės naudojimas įvesties skaitymui

Toliau pateikiamas pirmiau minėto metodo įgyvendinimas:

Java
/*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) {  }  } } 

Išvestis:

Enter your name: Geeks Name=Geeks 

2. Skaitytuvo klasės naudojimas norint priimti įvestį Java

Tai pažangi BufferedReader versija, kuri buvo įtraukta į vėlesnes Java versijas. Skaitytuvas gali nuskaityti suformatuotą įvestį. Jis turi skirtingas funkcijas, skirtas įvairių tipų duomenų tipams.

  • Skaitytuvas yra daug lengviau skaitomas, nes mes neturime rašyti metimų, nes nėra jokių išimčių.
  • Jis buvo pridėtas vėlesnėse „Java“ versijose
  • Jame yra iš anksto nustatytų funkcijų, skirtų skaityti sveikąjį skaičių, simbolį ir kitus duomenų tipus.

Skaitytuvo klasės sintaksė

Scanner scn = new Scanner(System.in); 

Importuojama skaitytuvo klasė

Norėdami naudoti skaitytuvą, turime importuoti skaitytuvo klasę iš util paketo kaip

import java.util.Scanner; 

Integruoto skaitytuvo funkcijos yra šios:

  • Sveikasis skaičius: nextInt()
  • Plūdė: nextFloat()
  • Styga: next() ir nextLine()

Taigi, naudojant sveikąjį skaičių ir eilutę skaitytuve, nereikalaujame analizuoti, kaip reikalavome BufferedReader.

Java
// 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);  } } 

Išvestis:

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

2 pavyzdys:

Java
// 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);  } } 

Išvestis

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

„BufferedReader“ ir „Scanner“ skirtumai

  • BufferedReader yra labai paprastas būdas skaityti įvestį, paprastai naudojamą simbolių srautui skaityti. Tai suteikia pranašumą prieš skaitytuvą, nes yra greitesnis nei skaitytuvas, nes skaitytuvas atlieka daug papildomo apdorojimo, kad analizuotų įvestį; kaip matyti iš nextInt(), nextFloat()
  • BufferedReader yra lankstesnis, nes galime nurodyti srauto įvesties dydį, kurį reikia skaityti. (Apskritai, būtent ten „BufferedReader“ skaito didesnę įvestį nei skaitytuvas)
  • Šie du veiksniai veikia, kai skaitome didesnį įvestį. Apskritai skaitytuvo klasė aptarnauja įvestį.
  • Pirmenybė teikiama „BufferedReader“, nes ji sinchronizuojama. Kai dirbate su keliomis temomis, pageidautina.
  • Dėl tinkamo įvesties ir lengvo skaitymo. Skaitytuvui teikiama pirmenybė, o ne BufferedReader.