logo

Kako prevzeti vnos od uporabnika v Javi?

Java prinaša različne tokove s svojim I/O paketom, ki uporabniku pomaga izvajati vse vhodno-izhodne operacije Java. Ti tokovi podpirajo vse vrste objektov, tipe podatkov, znake, datoteke itd., da v celoti izvajajo V/I operacije. Vnos v Javi je mogoč z določenimi metodami, omenjenimi spodaj v članku.

Metode za vnos v Javi

obstajajo dva načina s katerim lahko sprejmemo vnos Jave od uporabnika ali iz datoteke



  • Razred BufferedReader
  • Razred optičnega bralnika

1. Uporaba razreda BufferedReader za vnos nizov v Javi

Je preprost razred, ki se uporablja za branje zaporedja znakov. Ima preprosto funkcijo read, ki prebere znak, drugo branje, ki prebere niz znakov, in funkcijo readLine(), ki prebere vrstico.

InputStreamReader() je funkcija, ki pretvori vhodni tok bajtov v tok znakov, tako da ga je mogoče brati, ko BufferedReader pričakuje tok znakov. BufferedReader lahko vrže označene izjeme.

Spodaj je izvedba zgornjega pristopa:



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

Izhod

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

Uporaba razreda bralnika medpomnilnika za branje vnosa

Spodaj je izvedba zgornjega pristopa:

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

Izhod:



Enter your name: Geeks Name=Geeks>

2. Uporaba razreda Scanner za sprejemanje vnosa v Javi

Je napredna različica BufferedReaderja, ki je bila dodana v kasnejših različicah Jave. Optični bralnik lahko bere formatiran vnos. Ima različne funkcije za različne vrste podatkovnih vrst.

  • Optični bralnik je veliko lažji za branje, saj nam ni treba pisati vržekov, saj ne vrže izjeme.
  • Dodan je bil v poznejših različicah Jave
  • Vsebuje tudi vnaprej določene funkcije za branje celih števil, znakov in drugih tipov podatkov.

Sintaksa razreda Scanner

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

Uvažanje razreda optičnega bralnika

' Za uporabo Scannerja moramo razred Scanner uvoziti iz paketa util as

import java.util.Scanner;>

Funkcije vgrajenega optičnega bralnika so naslednje:

  • Celo število: nextInt()
  • Lebdeč: nextFloat()
  • Vrvica : next() in nextLine()

Zato v primeru Integer in String v Scannerju ne potrebujemo razčlenjevanja, kot smo ga zahtevali v BufferedReaderju.

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

Izhod:

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

Primer 2:

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

Izhod

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

Razlike med programoma BufferedReader in Scanner

  • BufferedReader je zelo osnovni način za branje vnosa, ki se običajno uporablja za branje toka znakov. Daje prednost pred Scannerjem, saj je hitrejši od Scannerja, ker Scanner opravi veliko naknadne obdelave za razčlenjevanje vnosa; kot je razvidno iz nextInt(), nextFloat()
  • BufferedReader je bolj prilagodljiv, saj lahko določimo velikost vnosa toka za branje. (Na splošno tam BufferedReader prebere večji vnos kot Scanner)
  • Ta dva dejavnika prideta v poštev, ko beremo večji vnos. Na splošno razred Scanner služi vnosu.
  • Prednost ima BufferedReader, saj je sinhroniziran. Pri obravnavanju več niti je prednostna.
  • Za spodoben vnos in lahko berljivost. Optični bralnik ima prednost pred BufferedReaderjem.