Java tar med olika strömmar med sitt I/O-paket som hjälper användaren att utföra alla Java input-output operationer. Dessa strömmar stöder alla typer av objekt, datatyper, tecken, filer etc. för att fullständigt utföra I/O-operationerna. Inmatning i Java kan ske med vissa metoder som nämns nedan i artikeln.
Metoder för att ta indata i Java
Det finns två sätt genom vilken vi kan ta Java-indata från användaren eller från en fil
- Bufferad Reader Class
- Skannerklass
1. Använda BufferedReader Class för stränginmatning i Java
Det är en enkel klass som används för att läsa en sekvens av tecken. Den har en enkel läsfunktion som läser ett tecken, en annan läsning som läser en uppsättning tecken och en readLine() funktion som läser en rad.
InputStreamReader() är en funktion som omvandlar indataströmmen av bytes till en ström av tecken så att den kan läsas som BufferedReader förväntar sig en ström av karaktärer. BufferedReader kan kasta markerade undantag.
Nedan är implementeringen av ovanstående tillvägagångssätt:
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); } }>
Produktion
Mayank Solanki 888 Entered String : Mayank Solanki Entered Integer : 888>
Använda Buffer Reader Class för att läsa indata
Nedan är implementeringen av ovanstående tillvägagångssätt:
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) { } } }>
Produktion:
Enter your name: Geeks Name=Geeks>
2. Använda skannerklass för att ta indata i Java
Det är en avancerad version av BufferedReader som lades till i senare versioner av Java. Skannern kan läsa formaterad indata. Den har olika funktioner för olika typer av datatyper.
- Skannern är mycket lättare att läsa eftersom vi inte behöver skriva kast eftersom det inte finns något undantag från den.
- Det lades till i senare versioner av Java
- Den innehåller fördefinierade funktioner för att läsa ett heltal, tecken och andra datatyper också.
Syntax för skannerklass
Scanner scn = new Scanner(System.in);>
Importera skannerklass
' För att använda Scannern måste vi importera Scanner-klassen från util-paketet as
import java.util.Scanner;>
Inbyggda skannerfunktioner är följande:
- Heltal: nextInt()
- Flyta: nextFloat()
- Sträng : next() och nextLine()
Därför, i fallet med heltal och sträng i skanner, kräver vi inte analys som vi krävde i 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); } }>
Utgång:
Entered String str1 : Geeks Entered String str2 : Geeks For Geeks Entered Integer : 123 Entered FloatValue : 123.090>
Exempel 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); } }>
Produktion
Enter your name Geeks Enter your rollno 5 Enter your marks 84.60 Name=Geeks Rollno=5 Marks=84.60>
Skillnader mellan BufferedReader och Scanner
- BufferedReader är ett mycket grundläggande sätt att läsa indata som vanligtvis används för att läsa teckenströmmen. Det ger en fördel gentemot Scanner eftersom det är snabbare än Scanner eftersom Scanner gör massor av efterbearbetning för att analysera indata; som ses i nextInt(), nextFloat()
- BufferedReader är mer flexibel eftersom vi kan specificera storleken på strömingången som ska läsas. (I allmänhet är det där BufferedReader läser större indata än Scanner)
- Dessa två faktorer spelar in när vi läser större input. I allmänhet tjänar skannerklassen indata.
- BufferedReader är att föredra eftersom den är synkroniserad. När du hanterar flera trådar är det att föredra.
- För anständig input och enkel läsbarhet. Scannern är att föredra framför BufferedReader.