Metodo scanner nextLine ()

1. Panoramica

In questo breve tutorial, esamineremo brevemente il metodo nextLine () della classe java.util.Scanner , ovviamente con l'obiettivo di imparare a usarlo nella pratica.

2. Scanner.nextLine ()

Il metodo nextLine () della classe java.util.Scanner esegue la scansione dalla posizione corrente finché non trova un delimitatore di separazione di riga. Il metodo restituisce la stringa dalla posizione corrente alla fine della riga.

Di conseguenza, dopo l'operazione, la posizione dello scanner viene impostata all'inizio della riga successiva che segue il delimitatore.

Il metodo cercherà tra i dati di input cercando un separatore di riga. Può eseguire la scansione di tutti i dati di input alla ricerca della riga da saltare se non sono presenti separatori di riga.

La firma del metodo nextLine () è:

public String nextLine()

Il metodo non accetta parametri. Restituisce la riga corrente, escludendo qualsiasi separatore di riga alla fine.

Diamo un'occhiata al suo utilizzo:

try (Scanner scanner = new Scanner("Scanner\nTest\n")) { assertEquals("Scanner", scanner.nextLine()); assertEquals("Test", scanner.nextLine()); }

Come abbiamo visto, il metodo restituisce l'input dalla posizione corrente dello scanner fino a trovare il separatore di riga:

try (Scanner scanner = new Scanner("Scanner\n")) { scanner.useDelimiter(""); scanner.next(); assertEquals("canner", scanner.nextLine()); }

Nell'esempio precedente, la chiamata a next () restituisce "S" e fa avanzare la posizione dello scanner in modo che punti a "c" .

Pertanto, quando chiamiamo il metodo nextLine () , restituisce l'input dalla posizione corrente dello scanner finché non trova un separatore di riga.

Il metodo nextLine () genera due tipi di eccezioni controllate.

In primo luogo, quando non viene trovato alcun separatore di riga, genera NoSuchElementException :

@Test(expected = NoSuchElementException.class) public void whenReadingLines_thenThrowNoSuchElementException() { try (Scanner scanner = new Scanner("")) { scanner.nextLine(); } }

In secondo luogo, genera IllegalStateException se lo scanner è chiuso:

@Test(expected = IllegalStateException.class) public void whenReadingLines_thenThrowIllegalStateException() { Scanner scanner = new Scanner(""); scanner.close(); scanner.nextLine(); }

3. Conclusione

In questo articolo fino al punto, abbiamo esaminato il metodo nextLine () della classe Scanner di Java .

Inoltre, abbiamo esaminato il suo utilizzo in un semplice programma Java. Infine, abbiamo esaminato le eccezioni generate dal metodo e dal codice di esempio che lo illustra.

Come sempre, il codice sorgente completo degli esempi funzionanti è disponibile su GitHub.