logo

Hvordan ta innspill fra bruker i Java?

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 linux
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);  } }>

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.