La classe scanner in Java si trova nel pacchetto java.util. Java offre vari modi per leggere l'input dalla tastiera, la classe java.util.Scanner è uno di questi.
La classe Java Scanner suddivide l'input in token utilizzando un delimitatore che per impostazione predefinita è uno spazio bianco. Fornisce molti metodi per leggere e analizzare vari valori primitivi.
La classe Java Scanner è ampiamente utilizzata per analizzare il testo alla ricerca di stringhe e tipi primitivi utilizzando un'espressione regolare. È il modo più semplice per ottenere input in Java. Con l'aiuto di Scanner in Java, possiamo ottenere input dall'utente in tipi primitivi come int, long, double, byte, float, short, ecc.
La classe Java Scanner estende la classe Object e implementa le interfacce Iterator e Closeable.
La classe Java Scanner fornisce metodi nextXXX() per restituire il tipo di valore come nextInt(), nextByte(), nextShort(), next(), nextLine(), nextDouble(), nextFloat(), nextBoolean(), ecc. Per ottenere un singolo carattere dallo scanner, puoi chiamare il metodo next().charAt(0) che restituisce un singolo carattere.
Dichiarazione della classe dello scanner Java
public final class Scanner extends Object implements Iterator
Come ottenere lo scanner Java
Per ottenere l'istanza di Java Scanner che legge l'input dell'utente, dobbiamo passare il flusso di input (System.in) nel costruttore della classe Scanner. Per esempio:
Scanner in = new Scanner(System.in);
Per ottenere l'istanza di Java Scanner che analizza le stringhe, dobbiamo passare le stringhe nel costruttore della classe Scanner. Per esempio:
Scanner in = new Scanner('Hello Javatpoint');
Costruttori di classi Java Scanner
SN | Costruttore | Descrizione |
---|---|---|
1) | Scanner (origine file) | Costruisce un nuovo scanner che produce valori scansionati dal file specificato. |
2) | Scanner (origine file, stringa nomesetcaratteri) | Costruisce un nuovo scanner che produce valori scansionati dal file specificato. |
3) | Scanner (sorgente InputStream) | Costruisce un nuovo scanner che produce valori scansionati dal flusso di input specificato. |
4) | Scanner (origine InputStream, stringa charsetName) | Costruisce un nuovo scanner che produce valori scansionati dal flusso di input specificato. |
5) | Scanner (fonte leggibile) | Costruisce un nuovo Scanner che produce valori scansionati dalla fonte specificata. |
6) | Scanner (origine stringa) | Costruisce un nuovo Scanner che produce valori scansionati dalla stringa specificata. |
7) | Scanner (sorgente ReadableByteChannel) | Costruisce un nuovo scanner che produce valori scansionati dal canale specificato. |
8) | Scanner (sorgente ReadableByteChannel, stringa charsetName) | Costruisce un nuovo scanner che produce valori scansionati dal canale specificato. |
9) | Scanner (origine del percorso) | Costruisce un nuovo scanner che produce valori scansionati dal file specificato. |
10) | Scanner(Origine del percorso, String charsetName) | Costruisce un nuovo scanner che produce valori scansionati dal file specificato. |
Metodi di classe Java Scanner
Di seguito è riportato l'elenco dei metodi scanner:
SN | Modificatore e tipo | Metodo | Descrizione |
---|---|---|---|
1) | vuoto | vicino() | Viene utilizzato per chiudere questo scanner. |
2) | modello | delimitatore() | Viene utilizzato per ottenere il Pattern attualmente utilizzato dalla classe Scanner per far corrispondere i delimitatori. |
3) | Flusso | trova tutto() | Viene utilizzato per trovare un flusso di risultati di corrispondenza che corrispondono alla stringa di modello fornita. |
4) | Corda | trovaInLine() | Viene utilizzato per trovare l'occorrenza successiva di un modello costruito dalla stringa specificata, ignorando i delimitatori. |
5) | corda | trovaAll'Orizzonte() | Viene utilizzato per trovare l'occorrenza successiva di un modello costruito dalla stringa specificata, ignorando i delimitatori. |
6) | booleano | haSuccessivo() | Restituisce vero se questo scanner ha un altro token nel suo input. |
7) | booleano | hasNextBigDecimal() | Viene utilizzato per verificare se il token successivo nell'input di questo scanner può essere interpretato come BigDecimal utilizzando il metodo nextBigDecimal() oppure no. |
8) | booleano | hasNextBigInteger() | Viene utilizzato per verificare se il token successivo nell'input di questo scanner può essere interpretato come BigDecimal utilizzando il metodo nextBigDecimal() oppure no. |
9) | booleano | hasNextBoolean() | Viene utilizzato per verificare se il token successivo nell'input di questo scanner può essere interpretato come booleano utilizzando il metodo nextBoolean() oppure no. |
10) | booleano | hasNextByte() | Viene utilizzato per verificare se il token successivo nell'input di questo scanner può essere interpretato come un byte utilizzando il metodo nextBigDecimal() oppure no. |
undici) | booleano | hasNextDouble() | Viene utilizzato per verificare se il token successivo nell'input di questo scanner può essere interpretato come BigDecimal utilizzando il metodo nextByte() oppure no. |
12) | booleano | hasNextFloat() | Viene utilizzato per verificare se il token successivo nell'input di questo scanner può essere interpretato come Float utilizzando il metodo nextFloat() oppure no. |
13) | booleano | hasNextInt() | Viene utilizzato per verificare se il token successivo nell'input di questo scanner può essere interpretato come un int utilizzando il metodo nextInt() oppure no. |
14) | booleano | haRigaProssima() | Viene utilizzato per verificare se è presente o meno un'altra riga nell'input di questo scanner. |
quindici) | booleano | haNextLong() | Viene utilizzato per verificare se il token successivo nell'input di questo scanner può essere interpretato come Long utilizzando il metodo nextLong() oppure no. |
16) | booleano | haNextShort() | Viene utilizzato per verificare se il token successivo nell'input di questo scanner può essere interpretato come Short utilizzando il metodo nextShort() oppure no. |
17) | IOException | ioException() | Viene utilizzato per ottenere l'ultima IOException lanciata dal file leggibile di questo scanner. |
18) | Locale | locale() | Viene utilizzato per ottenere un Locale della classe Scanner. |
19) | Risultato della partita | incontro() | Viene utilizzato per ottenere il risultato della corrispondenza dell'ultima operazione di scansione eseguita da questo scanner. |
venti) | Corda | Prossimo() | Viene utilizzato per ottenere il successivo token completo dallo scanner in uso. |
ventuno) | BigDecimal | nextBigDecimal() | Esegue la scansione del token successivo dell'input come BigDecimal. |
22) | BigInteger | nextBigInteger() | Esegue la scansione del token successivo dell'input come BigInteger. |
23) | booleano | nextBooleano() | Esegue la scansione del token successivo dell'input in un valore booleano e restituisce quel valore. |
24) | byte | nextByte() | Esegue la scansione del token successivo dell'input come byte. |
25) | Doppio | successivoDoppio() | Esegue la scansione del token successivo dell'input come doppio. |
26) | galleggiante | successivoFloat() | Esegue la scansione del token successivo dell'input come float. |
27) | int | nextInt() | Esegue la scansione del token successivo dell'input come Int. |
28) | Corda | riga successiva() | Viene utilizzato per ottenere la stringa di input che è stata saltata dell'oggetto Scanner. |
29) | lungo | successivoLong() | Esegue la scansione del token successivo dell'input come se fosse lungo. |
30) | corto | successivoBreve() | Esegue la scansione del token successivo dell'input come short. |
31) | int | radice() | Viene utilizzato per ottenere la radice predefinita dell'utilizzo dello scanner. |
32) | vuoto | rimuovere() | Viene utilizzato quando l'operazione di rimozione non è supportata da questa implementazione di Iterator. |
33) | Scanner | Ripristina() | Viene utilizzato per ripristinare lo scanner in uso. |
3.4) | Scanner | saltare() | Salta l'input che corrisponde al modello specificato, ignorando i delimitatori |
35) | Flusso | gettoni() | Viene utilizzato per ottenere un flusso di token separati da delimitatori dall'oggetto Scanner in uso. |
36) | Corda | accordare() | Viene utilizzato per ottenere la rappresentazione della stringa di Scanner utilizzando. |
37) | Scanner | utilizzareDelimitatore() | Viene utilizzato per impostare il modello di delimitazione dello scanner in uso sul modello specificato. |
38) | Scanner | usaLocale() | Viene utilizzato per impostare l'oggetto locale di questo scanner sulla locale specificata. |
39) | Scanner | usaRadix() | Viene utilizzato per impostare la radice predefinita dello scanner in uso sulla radice specificata. |
Esempio 1
Vediamo un semplice esempio di Java Scanner in cui riceviamo un singolo input dall'utente. Qui, stiamo chiedendo una stringa tramite il metodo in.nextLine().
import java.util.*; public class ScannerExample { public static void main(String args[]){ Scanner in = new Scanner(System.in); System.out.print('Enter your name: '); String name = in.nextLine(); System.out.println('Name is: ' + name); in.close(); } }
Produzione:
Enter your name: sonoo jaiswal Name is: sonoo jaiswal
Esempio 2
import java.util.*; public class ScannerClassExample1 { public static void main(String args[]){ String s = 'Hello, This is JavaTpoint.'; //Create scanner Object and pass string in it Scanner scan = new Scanner(s); //Check if the scanner has a token System.out.println('Boolean Result: ' + scan.hasNext()); //Print the string System.out.println('String: ' +scan.nextLine()); scan.close(); System.out.println('--------Enter Your Details-------- '); Scanner in = new Scanner(System.in); System.out.print('Enter your name: '); String name = in.next(); System.out.println('Name: ' + name); System.out.print('Enter your age: '); int i = in.nextInt(); System.out.println('Age: ' + i); System.out.print('Enter your salary: '); double d = in.nextDouble(); System.out.println('Salary: ' + d); in.close(); } }
Produzione:
Boolean Result: true String: Hello, This is JavaTpoint. -------Enter Your Details--------- Enter your name: Abhishek Name: Abhishek Enter your age: 23 Age: 23 Enter your salary: 25000 Salary: 25000.0
Esempio 3
import java.util.*; public class ScannerClassExample2 { public static void main(String args[]){ String str = 'Hello/This is JavaTpoint/My name is Abhishek.'; //Create scanner with the specified String Object Scanner scanner = new Scanner(str); System.out.println('Boolean Result: '+scanner.hasNextBoolean()); //Change the delimiter of this scanner scanner.useDelimiter('/'); //Printing the tokenized Strings System.out.println('---Tokenizes String---'); while(scanner.hasNext()){ System.out.println(scanner.next()); } //Display the new delimiter System.out.println('Delimiter used: ' +scanner.delimiter()); scanner.close(); } }
Produzione:
Boolean Result: false ---Tokenizes String--- Hello This is JavaTpoint My name is Abhishek. Delimiter used: /