logo

Kā Java programmā iegūt lietotāja ievadi?

Java piedāvā dažādas straumes ar savu I/O pakotni, kas palīdz lietotājam veikt visas Java ievades-izejas darbības. Šīs straumes atbalsta visu veidu objektus, datu tipus, rakstzīmes, failus utt., lai pilnībā izpildītu I/O darbības. Ievade Java var veikt ar noteiktām metodēm, kas minētas tālāk rakstā.

Ievades iegūšanas metodes Java

Tur ir divos veidos ar kuru mēs varam iegūt Java ievadi no lietotāja vai no faila

  • BufferedReader klase
  • Skenera klase

1. BufferedReader klases izmantošana virkņu ievadei Java

Tā ir vienkārša klase, ko izmanto, lai nolasītu rakstzīmju secību. Tam ir vienkārša lasīšanas funkcija, kas nolasa rakstzīmi, cita lasīšanas funkcija, kas nolasa rakstzīmju masīvu, un funkcija readLine(), kas nolasa rindiņu.



InputStreamReader() ir funkcija, kas pārvērš ievades baitu straumi rakstzīmju straumē, lai to varētu nolasīt, kā BufferedReader sagaida rakstzīmju straume. BufferedReader var mest pārbaudītus izņēmumus.

virkņu masīvs c valodā

Tālāk ir aprakstīta iepriekš minētās pieejas īstenošana.

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

Izvade

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

Bufera lasītāja klases izmantošana ievades lasīšanai

Tālāk ir aprakstīta iepriekš minētās pieejas īstenošana.

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) {  }  } }>

Izvade:

Enter your name: Geeks Name=Geeks>

2. Skenera klases izmantošana Java ievades ņemšanai

Tā ir uzlabota BufferedReader versija, kas tika pievienota jaunākās Java versijās. Skeneris var nolasīt formatētu ievadi. Tam ir dažādas funkcijas dažādiem datu tipiem.

  • Skeneris ir daudz vieglāk lasāms, jo mums nav jāraksta metieni, jo tas nav izņēmums.
  • Tas tika pievienots jaunākajās Java versijās
  • Tajā ir iepriekš definētas funkcijas, lai lasītu arī veselu skaitļu, rakstzīmju un citus datu tipus.

Skenera klases sintakse

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

Skenera klases importēšana

' Lai izmantotu skeneri, mums ir jāimportē skenera klase no util pakotnes kā

import java.util.Scanner;>

Iebūvētā skenera funkcijas ir šādas:

  • Vesels skaitlis: nextInt()
  • Pludiņš: nextFloat()
  • Virkne: next() un nextLine()

Tādējādi, ja skenerī ir vesels skaitlis un virkne, mums nav nepieciešama parsēšana, kā tas tika prasīts programmā 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);  } }>

Izvade:

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

2. piemērs:

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

Izvade

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

Atšķirības starp BufferedReader un skeneri

  • BufferedReader ir ļoti vienkāršs veids, kā nolasīt ievadi, ko parasti izmanto rakstzīmju straumes lasīšanai. Tas dod priekšrocības salīdzinājumā ar skeneri, jo tas ir ātrāks par skeneri, jo skeneris veic daudz pēcapstrādes ievades parsēšanai; kā redzams nextInt(), nextFloat()
  • BufferedReader ir elastīgāks, jo mēs varam norādīt lasāmās straumes ievades lielumu. (Kopumā tieši tur BufferedReader nolasa lielāku ievadi nekā skeneris)
  • Šie divi faktori stājas spēkā, kad mēs lasām lielāku ievadi. Parasti skenera klase apkalpo ievadi.
  • Priekšroka tiek dota BufferedReader, jo tā ir sinhronizēta. Strādājot ar vairākiem pavedieniem, tas ir vēlams.
  • Pienācīgai ievadei un ērtai lasāmībai. Priekšroka tiek dota skenerim, nevis BufferedReader.