Scanner , una classe nel linguaggio di programmazione Java in grado di analizzare tipi primitivi e stringhe utilizzando espressioni regolari. Il metodo scanner nextLine() in Java sposta questo scanner oltre la riga corrente e restituisce l'input saltato. Maggiori informazioni su nextLine() e Scanner più avanti in questo articolo.
Brevemente sulla classe Scanner e su come funziona
In parole povere, la classe java.util.Scanner consente di leggere input da varie fonti, inclusa la console. Sembra davvero simile ad uno scanner classico. Questo dispositivo hardware ha un'architettura complicata, ma è piuttosto semplice descriverne il funzionamento. Lo scanner legge la data inserita dall'utente, ad esempio un documento, e conserva i dati in memoria come un'immagine o un file PDF. Lo scanner Java, proprio come quello reale, legge i dati dalla fonte specificata. Ad esempio, da una stringa, da un file, da una console. Quindi riconosce queste informazioni e le elabora secondo necessità. Ad esempio il programma chiede di inserire alcuni dati dalla console e li legge o vuole leggerli da un file. Per questa operazione lo scanner dispone di diversi metodi abbinati alla parola “successivo”. Come next() , nextLine() , nextInt() , nextDouble() .metodo nextLine()
Come abbiamo detto sopra, l'oggetto dello scanner divide l'input in token utilizzando il pattern delimitatore, spazi bianchi per impostazione predefinita, ma può essere sostituito con una stringa ( java.lang.String ) o un'espressione regolare ( java.util.regex. Modello ). I token risultanti possono quindi essere convertiti in valori di vario tipo utilizzando vari metodi successivi. Il metodo Scanner nextLine() in Java fa avanzare questo scanner oltre la riga corrente e restituisce l'input che è stato saltato. Generale next() trova e restituisce il successivo token completo da questo scanner. Il metodo nextLine() continua a cercare nell'input un separatore di riga, quindi potrebbe bufferizzare tutto l'input cercando una riga da saltare se non sono presenti separatori di riga. Questo metodo genera le prossime eccezioni:- NoSuchElementException: genera un'eccezione se non è stata trovata alcuna riga
- IllegalStateException: genera un'eccezione se lo scanner è chiuso
esempio nextLine()
Diciamo che vogliamo che l'utente inserisca qualsiasi parola o frase nella console e potremmo mostrargli quale parola o frase ha inserito.import java.util.Scanner;
//…scanner.nextLine() example
public class ScannerTest {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println("Enter any phrase and I'll repeat it!... ");
//here we are reading the next line:
String sentence = scan.nextLine();
System.out.println(sentence);
}
}
L'output può essere ad esempio il seguente:
Inserisci una frase qualsiasi e la ripeterò!... ecco la mia frase ecco la mia frase
Se usi il metodo next() invece di nextLine() , otterrai solo la prima parola della frase.
Inserisci una frase qualsiasi e la ripeterò!... ecco la mia frase qui
Facciamo un esempio di un metodo nextLine() dello scanner funzionante per leggere da un file. Per questo esempio ho creato un file txt myTest.txt. Ci sono due righe in quel file:
il mio file di test e la riga successiva sono qui
Ecco un programma che legge due righe da un file.
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class ScannerTest {
public static void main(String[] args) throws FileNotFoundException {
Scanner scanner = new Scanner(new File("d://myTest.txt"));
String textFromFile1 = scanner.nextLine();
String textFromFile2 = scanner.nextLine();
System.out.println(textFromFile1);
System.out.println(textFromFile2);
scanner.close();
}
}
L'output è:
il mio file di test e la riga successiva sono qui
Se il percorso del file è sbagliato o il file con tale nome non esiste, otterrai l'output successivo:
Eccezione nel thread "main" java.io.FileNotFoundException: d:\myTest.txt in java.base/java.io.FileInputStream.open0 (metodo nativo) in java.base/java.io.FileInputStream.open(FileInputStream.java :213) in java.base/java.io.FileInputStream.<init>(FileInputStream.java:155) in java.base/java.util.Scanner.<init>(Scanner.java:639) in ScannerTest.main( ScannerTest.java:8)
Se il programma ha trovato il tuo file, ma è vuoto, otterrai NoSuchElementException:
Eccezione nel thread "main" java.util.NoSuchElementException: nessuna riga trovata in java.base/java.util.Scanner.nextLine(Scanner.java:1651) in ScannerTest.main(ScannerTest.java:10)
GO TO FULL VERSION