logo

Wie nehme ich Eingaben von Benutzern in Java entgegen?

Java bringt mit seinem I/O-Paket verschiedene Streams mit, die dem Benutzer bei der Durchführung aller Java-Eingabe-/Ausgabevorgänge helfen. Diese Streams unterstützen alle Arten von Objekten, Datentypen, Zeichen, Dateien usw., um die E/A-Vorgänge vollständig auszuführen. Die Eingabe in Java kann mit bestimmten Methoden erfolgen, die unten im Artikel erwähnt werden.

Methoden zur Eingabe in Java

Es gibt zwei Wege Dadurch können wir Java-Eingaben vom Benutzer oder aus einer Datei übernehmen



  • BufferedReader-Klasse
  • Scannerklasse

1. Verwenden der BufferedReader-Klasse für die Zeichenfolgeneingabe in Java

Es handelt sich um eine einfache Klasse, die zum Lesen einer Zeichenfolge verwendet wird. Es gibt eine einfache Lesefunktion, die ein Zeichen liest, eine weitere Lesefunktion, die ein Array von Zeichen liest, und eine readLine()-Funktion, die eine Zeile liest.

InputStreamReader() ist eine Funktion, die den Eingabe-Byte-Stream in einen Zeichen-Stream umwandelt, sodass er wie von BufferedReader erwartet gelesen werden kann Strom von Charakteren. BufferedReader kann geprüfte Ausnahmen auslösen.

Nachfolgend finden Sie die Umsetzung des oben genannten Ansatzes:



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

Ausgabe

Mayank Solanki 888 Entered String : Mayank Solanki Entered Integer : 888>

Verwenden der Buffer Reader-Klasse zum Lesen der Eingabe

Nachfolgend finden Sie die Umsetzung des oben genannten Ansatzes:

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) {  }  } }>

Ausgabe:



Enter your name: Geeks Name=Geeks>

2. Verwenden der Scanner-Klasse zum Erfassen von Eingaben in Java

Es handelt sich um eine erweiterte Version von BufferedReader, die in späteren Java-Versionen hinzugefügt wurde. Der Scanner kann formatierte Eingaben lesen. Es verfügt über unterschiedliche Funktionen für unterschiedliche Datentypen.

  • Der Scanner ist viel einfacher zu lesen, da wir keine Würfe schreiben müssen, da er keine Ausnahme auslöst.
  • Es wurde in späteren Versionen von Java hinzugefügt
  • Es enthält vordefinierte Funktionen zum Lesen von Ganzzahlen, Zeichen und anderen Datentypen.

Syntax der Scanner-Klasse

Scanner scn = new Scanner(System.in);>

Scannerklasse importieren

' Um den Scanner verwenden zu können, müssen wir die Scanner-Klasse aus dem Util-Paket als importieren

import java.util.Scanner;>

Die integrierten Scannerfunktionen sind wie folgt:

  • Ganze Zahl: nextInt()
  • Schweben: nextFloat()
  • Zeichenfolge: next() und nextLine()

Daher ist im Fall von Integer und String im Scanner kein Parsing erforderlich, wie wir es im BufferedReader benötigt haben.

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

Ausgabe :

Entered String str1 : Geeks Entered String str2 : Geeks For Geeks Entered Integer : 123 Entered FloatValue : 123.090>

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

Ausgabe

Enter your name Geeks  Enter your rollno 5 Enter your marks 84.60 Name=Geeks  Rollno=5 Marks=84.60>

Unterschiede zwischen BufferedReader und Scanner

  • BufferedReader ist eine sehr einfache Methode zum Lesen der Eingabe, die im Allgemeinen zum Lesen des Zeichenstroms verwendet wird. Es bietet einen Vorteil gegenüber dem Scanner, da es schneller als der Scanner ist, da der Scanner viele Nachbearbeitungen zum Parsen der Eingabe durchführt. wie in nextInt(), nextFloat() zu sehen
  • BufferedReader ist flexibler, da wir die Größe der zu lesenden Stream-Eingabe angeben können. (Im Allgemeinen liest BufferedReader dort größere Eingaben als Scanner)
  • Diese beiden Faktoren spielen eine Rolle, wenn wir größere Eingaben lesen. Im Allgemeinen dient die Scanner-Klasse der Eingabe.
  • BufferedReader wird bevorzugt, da es synchronisiert ist. Beim Umgang mit mehreren Threads wird dies bevorzugt.
  • Für anständige Eingaben und einfache Lesbarkeit. Der Scanner wird BufferedReader vorgezogen.