logo

Come ricevere input dall'utente in Java?

Java offre vari flussi con il suo pacchetto I/O che aiuta l'utente a eseguire tutte le operazioni di input-output Java. Questi flussi supportano tutti i tipi di oggetti, tipi di dati, caratteri, file, ecc. per eseguire completamente le operazioni di I/O. L'input in Java può avvenire con determinati metodi menzionati di seguito nell'articolo.

Metodi per ricevere input in Java

Ci sono due strade con il quale possiamo ricevere input Java dall'utente o da un file

  • Classe BufferedReader
  • Classe scanner

1. Utilizzo della classe BufferedReader per l'input di stringhe in Java

È una classe semplice che viene utilizzata per leggere una sequenza di caratteri. Ha una semplice funzione read che legge un carattere, un'altra read che legge un array di caratteri e una funzione readLine() che legge una riga.



InputStreamReader() è una funzione che converte il flusso di byte in input in un flusso di caratteri in modo che possa essere letto come BufferedReader si aspetta un flusso di personaggi. BufferedReader può lanciare eccezioni controllate.

vba

Di seguito è riportata l’implementazione dell’approccio di cui sopra:

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

Produzione

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

Utilizzo della classe Buffer Reader per leggere l'input

Di seguito è riportata l’implementazione dell’approccio di cui sopra:

Giava
/*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) {  }  } }>

Produzione:

come eliminare la colonna in postgresql
Enter your name: Geeks Name=Geeks>

2. Utilizzo della classe scanner per acquisire input in Java

È una versione avanzata di BufferedReader che è stata aggiunta nelle versioni successive di Java. Lo scanner può leggere input formattati. Ha funzioni diverse per diversi tipi di dati.

  • Lo scanner è molto più facile da leggere poiché non dobbiamo scrivere i lanci poiché non genera eccezioni.
  • È stato aggiunto nelle versioni successive di Java
  • Contiene funzioni predefinite per leggere anche numeri interi, caratteri e altri tipi di dati.

Sintassi della classe Scanner

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

Importazione della classe scanner

' Per utilizzare lo Scanner dobbiamo importare la classe Scanner dal pacchetto util as

import java.util.Scanner;>

Le funzioni dello scanner integrate sono le seguenti:

  • Numero intero: nextInt()
  • Galleggiante: successivoFloat()
  • Corda : next() e nextLine()

Pertanto, nel caso di Integer e String in Scanner, non è necessaria l'analisi come richiesto in BufferedReader.

materiale angolare
Giava
// 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);  } }>

Produzione :

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

Esempio 2:

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

Produzione

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

Differenze tra BufferedReader e Scanner

  • BufferedReader è un modo molto semplice per leggere l'input generalmente utilizzato per leggere il flusso di caratteri. Offre un vantaggio rispetto a Scanner poiché è più veloce di Scanner perché Scanner esegue molta post-elaborazione per analizzare l'input; come visto in nextInt(), nextFloat()
  • BufferedReader è più flessibile in quanto possiamo specificare la dimensione dell'input del flusso da leggere. (In generale, è lì che BufferedReader legge input più grandi di Scanner)
  • Questi due fattori entrano in gioco quando leggiamo input più ampi. In generale, la Classe Scanner serve l'input.
  • BufferedReader è preferito poiché è sincronizzato. Mentre si ha a che fare con più thread è preferibile.
  • Per un input decente e una facile leggibilità. Lo scanner è preferito a BufferedReader.