Java bringer forskellige streams med sin I/O-pakke, der hjælper brugeren med at udføre alle Java input-output operationer. Disse streams understøtter alle typer objekter, datatyper, tegn, filer osv. for fuldt ud at udføre I/O-operationerne. Input i Java kan ske med visse metoder nævnt nedenfor i artiklen.
Metoder til at tage input i Java
Der er to måder hvorved vi kan tage Java-input fra brugeren eller fra en fil
konverter strin til int
- Bufret læserklasse
- Scanner klasse
1. Brug af BufferedReader Class til strenginput i Java
Det er en simpel klasse, der bruges til at læse en sekvens af tegn. Den har en simpel funktion read, der læser et tegn, en anden read, som læser en række tegn, og en readLine() funktion, der læser en linje.
InputStreamReader() er en funktion, der konverterer inputstrømmen af bytes til en strøm af tegn, så den kan læses, som BufferedReader forventer en strøm af karakterer. BufferedReader kan kaste kontrollerede undtagelser.
Nedenfor er implementeringen af ovenstående tilgang:
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>
Brug af bufferlæserklasse til at læse input
Nedenfor er implementeringen af ovenstående tilgang:
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:
java returkommando
Enter your name: Geeks Name=Geeks>
2. Brug af scannerklasse til at tage input i Java
Det er en avanceret version af BufferedReader, som blev tilføjet i senere versioner af Java. Scanneren kan læse formateret input. Den har forskellige funktioner til forskellige typer datatyper.
- Scanneren er meget nemmere at læse, da vi ikke behøver at skrive kast, da der ikke er nogen undtagelse kastet af den.
- Det blev tilføjet i senere versioner af Java
- Den indeholder foruddefinerede funktioner til også at læse et heltal, tegn og andre datatyper.
Syntaks for Scanner-klassen
Scanner scn = new Scanner(System.in);>
Import af scannerklasse
' For at bruge Scanneren skal vi importere Scanner-klassen fra util-pakken som
import java.util.Scanner;>
Indbyggede scannerfunktioner er som følger:
- Heltal: nextInt()
- Flyde: nextFloat()
- String: next() og nextLine()
I tilfælde af heltal og streng i scanner kræver vi derfor ikke parsing, som vi krævede i BufferedReader.
hvad 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); } }> Output:
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); } }> Produktion
Enter your name Geeks Enter your rollno 5 Enter your marks 84.60 Name=Geeks Rollno=5 Marks=84.60>
Forskelle mellem BufferedReader og Scanner
- BufferedReader er en meget grundlæggende måde at læse input, der generelt bruges til at læse strømmen af tegn. Det giver en fordel i forhold til Scanner, da det er hurtigere end Scanner, fordi Scanner udfører masser af efterbehandling til at analysere input; som set i nextInt(), nextFloat()
- BufferedReader er mere fleksibel, da vi kan angive størrelsen på streaminput, der skal læses. (Generelt er det der, at BufferedReader læser større input end Scanner)
- Disse to faktorer spiller ind, når vi læser større input. Generelt tjener Scanner Class input.
- BufferedReader foretrækkes, da den er synkroniseret. Mens man beskæftiger sig med flere tråde, foretrækkes det.
- For anstændigt input og nem læsbarhed. Scanneren foretrækkes frem for BufferedReader.