java scanner class tutorial with examples
In questo tutorial, discuteremo su come importare e utilizzare la classe Scanner di Java insieme ai suoi vari metodi, API scanner ed esempi:
Abbiamo già visto i metodi di input-output standard utilizzati da Java per leggere / scrivere dati sui dispositivi I / O standard.
Java fornisce ancora un altro meccanismo per leggere l'input dell'utente. Questa è la classe Scanner. Sebbene non sia molto efficiente, la classe Scanner è il modo più semplice e preferito per leggere l'input nei programmi Java.
=> Controlla TUTTI i tutorial Java qui.
Cosa imparerai:
Classe scanner Java: uno sguardo approfondito
La classe Scanner viene utilizzata principalmente per scansionare l'input e leggere l'input di tipi di dati primitivi (incorporati) come int, decimal, double, ecc. La classe Scanner sostanzialmente restituisce l'input tokenizzato in base a un modello delimitatore. Quindi, in generale, se vuoi leggere il tipo dt, puoi usare la funzione nextdt () per leggere l'input.
Una classe Scanner implementa le interfacce Iterator (stringa), Closeable e AutoCloseable.
Esploriamo ora i dettagli di questa classe Scanner.
Importa scanner
La classe Scanner appartiene al pacchetto 'java.util'. Quindi per usare la classe Scanner nel tuo programma, devi importare questo pacchetto come segue.
importa java.util. *
O
import java.util.Scanner;
Entrambe le istruzioni precedenti importeranno la classe Scanner e le sue funzionalità nel programma.
Java Scanner Class
Una volta che la classe Scanner è stata importata nel programma Java, è possibile utilizzarla per leggere l'input di vari tipi di dati. A seconda che si desideri leggere l'input dallo standard input, dal file o dal canale, è possibile passare l'oggetto predefinito appropriato all'oggetto Scanner.
Di seguito è riportato un esempio di base dell'utilizzo della classe Scanner.
import java.util.*; public class Main { public static void main(String args()) { Scanner in = new Scanner (System.in); System.out.print ('Enter a String: '); String mystr = in.nextLine(); System.out.println('The String you entered is: ' + mystr); in.close(); } }
Produzione:
Nel programma precedente, abbiamo fornito 'System.in' (input standard) come oggetto durante la creazione di un oggetto di classe Scanner. Quindi leggiamo una stringa di input dallo standard input.
Scanner API (costruttori e metodi)
In questa sezione, esploreremo in dettaglio l'API della classe Scanner. La classe Scanner contiene vari costruttori sovraccaricati per accogliere vari metodi di input come System.in, input di file, percorso, ecc.
La tabella seguente fornisce il prototipo e la descrizione di ciascuno dei costruttori della classe Scanner.
come faccio ad aprire un file eps in Windows 10
No | Prototipo | Descrizione |
---|---|---|
7 | Scanner (origine percorso, stringa charsetName) | Questo costruttore costruisce un nuovo Scanner che analizza il file specificato e produce i valori |
uno | Scanner (sorgente InputStream) | Questo costruttore costruisce un nuovo Scanner che analizza il nuovo InputStream, la sorgente e produce i valori |
Due | Scanner (sorgente InputStream, String charsetName) | Questo costruttore costruisce un nuovo Scanner che analizza il nuovo InputStream, la sorgente e produce i valori |
3 | Scanner (origine file) | Questo costruttore costruisce un nuovo Scanner che analizza il file specificato e produce i valori |
4 | Scanner (origine file, stringa charsetName) | Questo costruttore costruisce un nuovo Scanner che analizza il file specificato e produce i valori |
5 | Scanner (origine stringa) | Questo costruttore costruisce un nuovo Scanner che analizza la stringa specificata e produce i valori |
6 | Scanner (origine percorso) | Questo costruttore costruisce un nuovo Scanner che analizza il file specificato e produce i valori |
8 | Scanner (sorgente leggibile) | Questo costruttore costruisce un nuovo Scanner che analizza l'origine specificata e produce i valori |
9 | Scanner (sorgente ReadableByteChannel) | Questo costruttore costruisce un nuovo Scanner che analizza il canale specificato e produce i valori |
10 | Scanner (origine ReadableByteChannel, String charsetName) | Questo costruttore costruisce un nuovo Scanner che analizza il canale specificato e produce i valori |
Proprio come i costruttori, la classe Scanner fornisce anche numerosi metodi che vengono utilizzati per analizzare e leggere l'input. Fornisce vari metodi booleani che consentono di verificare se il token successivo nell'input è un token di un particolare tipo di dati.
Si noti che per ogni costruttore, è possibile fornire un solo argomento con l'oggetto di input predefinito o due argomenti costituiti da un oggetto di input predefinito e da un set di caratteri. Nel caso di un argomento, viene assunto il set di caratteri predefinito.
Esistono anche metodi per recuperare i token di ogni tipo di dati.
Altri metodi includono quelli per impostare le impostazioni locali, radice, corrispondenza dei modelli, chiudere lo scanner, ecc.
La tabella seguente fornisce il prototipo e la descrizione di ciascuno dei metodi Scanner di base.
No | Prototipo | Descrizione |
---|---|---|
7 | Boolean hasNextFloat () | Controlla se il token successivo nell'input Scanner è di tipo float |
uno | Boolean hasNext () | Restituisce vero se è presente un altro token nell'input di Scanner |
Due | Boolean hasNextBigDecimal () | Controlla se il token successivo nell'input Scanner è di tipo bigDecimal. |
3 | Boolean hasNextBigInteger () | Controlla se il token successivo nell'input Scanner è di tipo bigInteger |
4 | Boolean hasNextBoolean () | Controlla se il token successivo nell'input Scanner è di tipo booleano |
5 | Boolean hasNextByte () | Controlla se il token successivo nell'input Scanner è di tipo Byte |
6 | Boolean hasNextDouble () | Controlla se il gettone successivo nell'ingresso Scanner è di tipo doppio |
8 | Boolean hasNextInt () | Controlla se il token successivo nell'input Scanner è di tipo intero |
9 | Boolean hasNextLine () | Controlla se il token successivo nell'input Scanner è un'altra riga |
10 | Boolean hasNextLong () | Controlla se il token successivo nell'input Scanner è di tipo lungo |
undici | Boolean hasNextShort () | Controlla se il token successivo nell'ingresso Scanner è di tipo breve |
12 | String next () | Scansiona l'input per il successivo token completo |
13 | BigDecimal nextBigDecimal () | Analizza l'input per il prossimo token BigDecimal |
14 | BigInteger nextBigInteger () | Analizza l'input per il prossimo token BigInteger |
quindici | Boolean nextBoolean () | Analizza l'input per il prossimo token booleano |
16 | Byte nextByte () | Esegue la scansione dell'input per il prossimo token Byte |
17 | Doppio successivo Doppio () | Scansiona l'input per il prossimo Double token |
18 | Float nextFloat () | Analizza l'input per il prossimo token float |
19 | Int nextInt () | Scansiona l'input per il successivo token intero |
venti | String nextLine () | Ottieni la stringa di input saltata dall'oggetto Scanner |
ventuno | Long nextLong () | Analizza l'input per il successivo token intero lungo |
22 | Short nextShort () | Analizza l'input per il successivo token intero breve |
2. 3 | Ripristino scanner () | Ripristina lo scanner attualmente in uso |
24 | Salta scanner () | Ignora i delimitatori e salta l'input che corrisponde al modello dato |
25 | Scanner useDelimiter () | Imposta il modello di delimitazione sul modello specificato |
26 | Scanner useLocale () | Imposta l'oggetto delle impostazioni internazionali degli scanner con le impostazioni internazionali specificate |
27 | Uso dello scanner: Radix () | Imposta la radice specificata come radice predefinita per Scanner |
28 | Int radix () | Restituisce la radice predefinita dello Scanner corrente |
29 | void remove () | Può essere utilizzato quando Iterator non supporta l'operazione di rimozione |
30 | Token di flusso () | Restituisce un flusso di token separati da delimitatori dallo Scanner corrente |
31 | String toString () | La rappresentazione della stringa di ritorno di un dato Scanner attualmente in uso |
32 | IOException ioException () | Restituisce l'ultima IOException generata da readable dell'oggetto Scanner |
33 | Stream findALL () | Restituisce il flusso di risultati della corrispondenza che corrispondono al modello specificato |
3. 4 | String findInLine () | Trova la prossima occorrenza del pattern dalla stringa data; ignora i delimitatori |
35 | String findWithinHorizon () | Trova la prossima occorrenza del pattern dalla stringa data; ignora i delimitatori |
36 | Delimitatore di pattern () | Restituisce il modello utilizzato dallo scanner corrente |
37 | Void close () | Chiude lo scanner |
38 | MatchResult match () | Restituisce il risultato corrispondente dell'ultima operazione di scansione |
39 | Locale locale() | Restituisce le impostazioni internazionali dello scanner corrente |
Dai un'occhiata Qui per saperne di più sui metodi scanner.
Come utilizzare lo scanner in Java?
Ora che hai visto i vari costruttori e metodi forniti dalla classe Scanner, implementiamo ora alcuni degli esempi per dimostrare come utilizzare la classe Scanner in Java.
La seguente implementazione mostra l'utilizzo della classe Scanner per leggere l'input da System.in, ovvero lo standard input.
Qui usiamo un oggetto System.in predefinito per creare un oggetto Scanner. All'utente viene quindi chiesto di inserire il nome, la classe e la percentuale. Tutti questi dettagli vengono letti utilizzando l'oggetto della classe Scanner.
Notare i metodi utilizzati dagli oggetti Scanner per leggere diversi tipi di input. Poiché il nome è una stringa, l'oggetto Scanner utilizza il metodo next (). Per l'input di classe, utilizza nextInt () mentre per la percentuale utilizza nextFloat ().
In questo modo, puoi facilmente separare l'input durante la lettura.
L'output del programma mostra l'ingresso inserito e le informazioni visualizzate.
import java.util.*; public class Main{ public static void main(String ()args){ String name; int myclass; float percentage; //creating object of Scanner class Scanner input = new Scanner(System.in); System.out.print('Enter your name: '); name = input.next(); System.out.print('Enter your class: '); myclass = input.nextInt(); System.out.print('Enter your percentage: '); percentage = input.nextFloat(); input.close(); System.out.println('Name: ' + name + ', Class: '+ myclass + ', Percentage: '+ percentage); } }
Produzione:
Stringa dello scanner
Come già accennato, puoi utilizzare vari oggetti predefiniti durante la creazione di un oggetto Scanner. Ciò significa che è possibile leggere l'input da input standard, file e vari canali I / O o anche da stringhe.
Quando viene utilizzato un input di stringa, è possibile utilizzare anche espressioni regolari al suo interno.
I seguenti esempi mostrano il programma in cui Scanner utilizza una stringa come input. Questo input viene quindi scansionato e i token separati dalla lettura di ogni token.
I token letti vengono quindi visualizzati nell'output.
import java.util.*; public class Main{ public static void main(String ()args){ System.out.println ('The subjects are as follows :'); String input = '1 Maths 2 English 3 Science 4 Hindi'; Scanner s = new Scanner(input); System.out.print(s.nextInt()+'. '); System.out.println(s.next()); System.out.print(s.nextInt()+'. '); System.out.println(s.next()); System.out.print(s.nextInt()+'. '); System.out.println(s.next()); System.out.print(s.nextInt()+'. '); System.out.println(s.next()); s.close(); } }
Produzione:
Chiudi scanner
La classe Java Scanner utilizza il metodo 'Close ()' per chiudere lo Scanner. La classe Scanner implementa internamente anche un'interfaccia Closeable e quindi se Scanner non è già chiuso, l'interfaccia Readable sottostante richiama il suo metodo close.
È una buona pratica di programmazione chiudere esplicitamente lo Scanner usando il metodo Close () una volta che hai finito di usarlo.
Nota: Se l'oggetto Scanner viene chiuso e viene effettuato un tentativo di ricerca, il risultato è 'IllegalStateException'.
Domande frequenti
D # 1) Cos'è la classe Scanner in Java?
Risposta: La classe Scanner fa parte del pacchetto 'java.util' di Java e viene utilizzata per leggere l'input di diversi tipi di dati primitivi come int, float, stringhe, ecc.
come riprodurre file swf su Windows
D # 2) Qual è la differenza tra i metodi next () e nextLine () della classe Scanner?
Risposta: Il metodo next () legge l'input fino allo spazio e posiziona il cursore sulla stessa riga dopo aver letto l'input. Il metodo nextLine () tuttavia legge l'intera riga di input fino alla fine della riga, inclusi gli spazi.
D # 3) Cos'è hasNext () in Java?
Risposta: Il metodo hasNext () è uno dei metodi di Java Scanner. Questo metodo restituisce true se lo scanner ha un altro token nell'input.
D # 4) È necessario chiudere una classe Scanner?
Risposta: È meglio, ma non obbligatorio, chiudere la classe Scanner come se non fosse chiusa, l'interfaccia Readable sottostante della classe Scanner fa il lavoro per te. Il compilatore potrebbe lampeggiare qualche avviso se non è chiuso.
Quindi, come buona pratica di programmazione, chiudere sempre lo Scanner.
D # 5) Qual è lo scopo di 'system.in' nella classe Scanner?
Risposta: Utilizzando 'System.in' nella classe Scanner, si consente allo Scanner di leggere la tastiera collegata ai dati di input standard.
Conclusione
In questo tutorial, abbiamo visto la classe Scanner e tutti i suoi dettagli, inclusa l'API e l'implementazione. La classe Scanner viene utilizzata per leggere i dati di input da una varietà di mezzi come input standard, file, canali IO, stringhe con / senza espressioni regolari, ecc.
Sebbene Scanner non sia un modo molto efficiente per leggere l'input, è uno dei modi più semplici. Lo Scanner ti permette di leggere l'input di vari tipi di dati primitivi come int, float, stringhe, ecc. Quando usi le stringhe come oggetto di input per la classe Scanner, puoi anche usare espressioni regolari con esso.
La classe Scanner consente inoltre di leggere l'input facendo corrispondere alcuni pattern o delimitatori.
Per concludere, l'utilizzo della classe Scanner in Java rimane il modo più semplice e preferito per leggere l'input.
=> Dai un'occhiata alla guida di formazione Java perfetta qui.
Lettura consigliata
- Cos'è Java Vector | Tutorial Java Vector Class con esempi
- Tutorial Java Array Class - classe java.util.Arrays con esempi
- Tutorial JAVA per principianti: oltre 100 tutorial video Java pratici
- Tutorial sull'interfaccia Java e sulla classe astratta con esempi
- Tutorial Java Reflection con esempi
- Jagged Array in Java - Tutorial con esempi
- Tutorial sulla lunghezza di array Java con esempi di codice
- Tutorial Java String | Metodi Java String con esempi