Java brengt verschillende streams met zijn I/O-pakket waarmee de gebruiker alle Java-invoer-uitvoerbewerkingen kan uitvoeren. Deze stromen ondersteunen alle soorten objecten, gegevenstypen, tekens, bestanden, enz. om de I/O-bewerkingen volledig uit te voeren. Invoer in Java kan met bepaalde methoden die hieronder in het artikel worden vermeld.
Methoden voor invoer in Java
Er zijn twee manieren waarmee we Java-invoer van de gebruiker of uit een bestand kunnen halen
- GebufferdeReader-klasse
- Scannerklasse
1. BufferedReader-klasse gebruiken voor tekenreeksinvoer in Java
Het is een eenvoudige klasse die wordt gebruikt om een reeks tekens te lezen. Het heeft een eenvoudige functie read die een teken leest, een andere read die een reeks tekens leest, en een readLine()-functie die een regel leest.
InputStreamReader() is een functie die de invoerstroom van bytes omzet in een stroom van tekens, zodat deze kan worden gelezen zoals BufferedReader een stroom van karakters. BufferedReader kan gecontroleerde uitzonderingen genereren.
Hieronder vindt u de implementatie van de bovenstaande aanpak:
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); } }>
Uitvoer
Mayank Solanki 888 Entered String : Mayank Solanki Entered Integer : 888>
Bufferlezerklasse gebruiken om de invoer te lezen
Hieronder vindt u de implementatie van de bovenstaande aanpak:
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) { } } }>
Uitgang:
Enter your name: Geeks Name=Geeks>
2. Scannerklasse gebruiken voor invoer in Java
Het is een geavanceerde versie van BufferedReader die in latere versies van Java is toegevoegd. De scanner kan geformatteerde invoer lezen. Het heeft verschillende functies voor verschillende soorten gegevenstypen.
- De scanner is veel gemakkelijker te lezen omdat we geen worpen hoeven te schrijven, omdat er geen uitzonderingen door worden gegenereerd.
- Het werd toegevoegd in latere versies van Java
- Het bevat vooraf gedefinieerde functies om ook een geheel getal, teken en andere gegevenstypen te lezen.
Syntaxis van de Scanner-klasse
Scanner scn = new Scanner(System.in);>
Scannerklasse importeren
' Om de Scanner te gebruiken, moeten we de Scanner-klasse uit het util-pakket importeren als
import java.util.Scanner;>
Ingebouwde scannerfuncties zijn als volgt:
- Geheel getal: volgendeInt()
- Vlot: volgendeFloat()
- Snaar : volgende() en volgenderegel()
Daarom hebben we in het geval van Integer en String in Scanner geen parsering nodig, zoals we dat wel nodig hadden in 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); } }>
Uitgang:
Entered String str1 : Geeks Entered String str2 : Geeks For Geeks Entered Integer : 123 Entered FloatValue : 123.090>
Voorbeeld 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); } }>
Uitvoer
Enter your name Geeks Enter your rollno 5 Enter your marks 84.60 Name=Geeks Rollno=5 Marks=84.60>
Verschillen tussen BufferedReader en Scanner
- BufferedReader is een zeer eenvoudige manier om de invoer te lezen die doorgaans wordt gebruikt om de stroom tekens te lezen. Het geeft een voorsprong op Scanner omdat het sneller is dan Scanner, omdat Scanner veel nabewerking uitvoert voor het parseren van de invoer; zoals te zien in nextInt(), nextFloat()
- BufferedReader is flexibeler omdat we de grootte van de te lezen streaminvoer kunnen specificeren. (Over het algemeen leest BufferedReader daar grotere invoer dan Scanner)
- Deze twee factoren spelen een rol als we grotere input lezen. Over het algemeen dient de Scannerklasse de invoer.
- BufferedReader heeft de voorkeur omdat het gesynchroniseerd is. Als het om meerdere threads gaat, heeft dit de voorkeur.
- Voor fatsoenlijke invoer en gemakkelijke leesbaarheid. De Scanner heeft de voorkeur boven BufferedReader.