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.