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 |
| 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.