logo

Classe scanner in Java

In Java, Scanner è una classe nel pacchetto java.util utilizzata per ottenere l'input dei tipi primitivi come int, double, ecc. e stringhe.

L'utilizzo della classe Scanner in Java è il modo più semplice per leggere l'input in un programma Java, sebbene non sia molto efficiente se si desidera un metodo di input per scenari in cui il tempo è un vincolo come nella programmazione competitiva.

Tipi di input dello scanner Java

La classe scanner aiuta a prendere il flusso di input standard in Java. Quindi, abbiamo bisogno di alcuni metodi per estrarre i dati dal flusso. I metodi utilizzati per l'estrazione dei dati sono menzionati di seguito:



Metodo

Descrizione

nextBooleano()

Utilizzato per leggere il valore booleano

nextByte()

Utilizzato per leggere il valore Byte

successivoDoppio()

Utilizzato per leggere il valore Double

successivoFloat()

Utilizzato per leggere il valore Float

nextInt()

Utilizzato per leggere il valore Int

riga successiva()

Utilizzato per leggere il valore della linea

successivoLong()

Utilizzato per leggere il valore Long

successivoBreve()

Utilizzato per leggere il valore breve

Diamo un'occhiata allo snippet di codice per leggere dati di vari tipi di dati.

Esempi di classe scanner Java

Esempio 1:

Giava




// Java program to read data of various types> // using Scanner class.> import> java.util.Scanner;> // Driver Class> public> class> ScannerDemo1 {> >// main function> >public> static> void> main(String[] args)> >{> >// Declare the object and initialize with> >// predefined standard input object> >Scanner sc =>new> Scanner(System.in);> >// String input> >String name = sc.nextLine();> >// Character input> >char> gender = sc.next().charAt(>0>);> >// Numerical data input> >// byte, short and float can be read> >// using similar-named functions.> >int> age = sc.nextInt();> >long> mobileNo = sc.nextLong();> >double> cgpa = sc.nextDouble();> >// Print the values to check if the input was> >// correctly obtained.> >System.out.println(>'Name: '> + name);> >System.out.println(>'Gender: '> + gender);> >System.out.println(>'Age: '> + age);> >System.out.println(>'Mobile Number: '> + mobileNo);> >System.out.println(>'CGPA: '> + cgpa);> >}> }>

java int nella stringa

>

>

Ingresso

Geek F 40 9876543210 9.9>

Produzione

Name: Geek Gender: F Age: 40 Mobile Number: 9876543210 CGPA: 9.9>

A volte dobbiamo verificare se il valore successivo che leggiamo è di un certo tipo o se l'input è terminato (marcatore EOF incontrato).

Quindi controlliamo se l'input dello scanner è del tipo che vogliamo con l'aiuto delle funzioni hasNextXYZ() dove XYZ è il tipo che ci interessa. La funzione restituisce true se lo scanner ha un token di quel tipo, altrimenti false. Ad esempio, nel codice seguente abbiamo utilizzato hasNextInt(). Per verificare la presenza di una stringa, utilizziamo hasNextLine(). Allo stesso modo, per verificare la presenza di un singolo carattere, utilizziamo hasNext().charAt(0).

Esempio 2:

Diamo un'occhiata allo snippet di codice per leggere alcuni numeri dalla console e stampare la loro media.

Giava




// Java program to read some values using Scanner> // class and print their mean.> import> java.util.Scanner;> public> class> ScannerDemo2 {> >public> static> void> main(String[] args)> >{> >// Declare an object and initialize with> >// predefined standard input object> >Scanner sc =>new> Scanner(System.in);> >// Initialize sum and count of input elements> >int> sum =>0>, count =>0>;> >// Check if an int value is available> >while> (sc.hasNextInt()) {> >// Read an int value> >int> num = sc.nextInt();> >sum += num;> >count++;> >}> >if> (count>>0>) {> >int> mean = sum / count;> >System.out.println(>'Mean: '> + mean);> >}> >else> {> >System.out.println(> >'No integers were input. Mean cannot be calculated.'>);> >}> >}> }>

>

>

Ingresso

1 2 3 4 5>

Produzione

Mean: 3>

Punti importanti sulla classe Java Scanner

  • Per creare un oggetto della classe Scanner, solitamente passiamo l'oggetto predefinito System.in, che rappresenta il flusso di input standard. Possiamo passare un oggetto della classe File se vogliamo leggere l'input da un file.
  • Per leggere i valori numerici di un determinato tipo di dati XYZ, la funzione da utilizzare è nextXYZ(). Ad esempio, per leggere un valore di tipo short, possiamo usare nextShort()
  • Per leggere le stringhe usiamo nextLine().
  • Per leggere un singolo carattere, usiamo next().charAt(0). La funzione next() restituisce il token/parola successivo nell'input come stringa e la funzione charAt(0) restituisce il primo carattere in quella stringa.
  • La classe Scanner legge un'intera riga e la divide in token. I token sono piccoli elementi che hanno un significato per il compilatore Java. Ad esempio, supponiamo che ci sia una stringa di input: Come stai
    In questo caso, l'oggetto scanner leggerà l'intera riga e dividerà la stringa in token: Come, sei e tu. L'oggetto quindi esegue un'iterazione su ciascun token e legge ciascun token utilizzando i suoi diversi metodi.