Java bringer forskjellige strømmer med sin I/O-pakke som hjelper brukeren med å utføre alle Java input-output operasjoner. Disse strømmene støtter alle typer objekter, datatyper, tegn, filer osv. for å fullføre I/O-operasjonene. Inndata i Java kan være med visse metoder nevnt nedenfor i artikkelen.
Metoder for å ta inndata i Java
Det er to veier som vi kan ta Java-inndata fra brukeren eller fra en fil
java gyldige identifikatorer
- Bufret leserklasse
- Skannerklasse
1. Bruke BufferedReader Class for strenginndata i Java
Det er en enkel klasse som brukes til å lese en sekvens av tegn. Den har en enkel funksjon som leser et tegn, en annen lesing som leser en rekke tegn, og en readLine()-funksjon som leser en linje.
InputStreamReader() er en funksjon som konverterer inngangsstrømmen av byte til en strøm av tegn slik at den kan leses slik BufferedReader forventer en strøm av karakterer. BufferedReader kan kaste avmerkede unntak.
Nedenfor er implementeringen av tilnærmingen ovenfor:
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); } }> Produksjon
Mayank Solanki 888 Entered String : Mayank Solanki Entered Integer : 888>
Bruke bufferleserklassen for å lese inndataene
Nedenfor er implementeringen av tilnærmingen ovenfor:
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) { } } }> Produksjon:
java returkommando
Enter your name: Geeks Name=Geeks>
2. Bruke skannerklasse for å ta inndata i Java
Det er en avansert versjon av BufferedReader som ble lagt til i senere versjoner av Java. Skanneren kan lese formatert inndata. Den har forskjellige funksjoner for forskjellige typer datatyper.
- Skanneren er mye lettere å lese siden vi ikke trenger å skrive kast, da det ikke er noe unntak som er kastet av den.
- Det ble lagt til i senere versjoner av Java
- Den inneholder forhåndsdefinerte funksjoner for å lese et heltall, tegn og andre datatyper også.
Syntaks for skannerklassen
Scanner scn = new Scanner(System.in);>
Importerer skannerklasse
' For å bruke skanneren må vi importere skannerklassen fra util-pakken som
import java.util.Scanner;>
Innebygde skannerfunksjoner er som følger:
- Heltall: nextInt()
- Flyte: nextFloat()
- streng: next() og nextLine()
Derfor, når det gjelder Integer og String in Scanner, krever vi ikke parsing slik vi krevde i BufferedReader.
hva er eksportkommando i linuxJava
// 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); } }> Utgang:
Entered String str1 : Geeks Entered String str2 : Geeks For Geeks Entered Integer : 123 Entered FloatValue : 123.090>
Eksempel 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); } }> Produksjon
Enter your name Geeks Enter your rollno 5 Enter your marks 84.60 Name=Geeks Rollno=5 Marks=84.60>
Forskjeller mellom BufferedReader og skanner
- BufferedReader er en veldig grunnleggende måte å lese inndata som vanligvis brukes til å lese strømmen av tegn. Det gir et forsprang i forhold til skanner ettersom den er raskere enn skanner fordi skanner utfører mye etterbehandling for å analysere inndataene; som sett i nextInt(), nextFloat()
- BufferedReader er mer fleksibel ettersom vi kan spesifisere størrelsen på strøminndata som skal leses. (Generelt er det der BufferedReader leser større inndata enn skanner)
- Disse to faktorene spiller inn når vi leser større input. Generelt serverer skannerklassen inndataene.
- BufferedReader foretrekkes da den er synkronisert. Mens du arbeider med flere tråder er det foretrukket.
- For anstendig input og lett lesbarhet. Skanneren foretrekkes fremfor BufferedReader.