2013-10-22 15 views
21

Sto scrivendo un programma che richiede il nome completo della persona e quindi prende quell'input e lo inverte (cioè John Doe - Doe, John). Ho iniziato cercando di ottenere solo l'input, ma si sta solo ottenendo il nome.Lo scanner non vede dopo lo spazio

Ecco il mio codice:

public static void processName(Scanner scanner) { 
    System.out.print("Please enter your full name: "); 
    String name = scanner.next(); 
    System.out.print(name); 
} 
+0

Una modifica precedente lo ha rovinato; arrotolato, ripulito, è anche l'obiettivo dupe per molti messaggi, e questo motivo vicino non è stato usato abbastanza bene. Votato per riaprire. Questo messaggio si autodistruggerà quando il post viene riaperto. –

risposta

35

Scelgo String name = scanner.nextLine(); invece di String name = scanner.next();

Piú informazioni sulla documentazione qui - next() e nextLine()

+0

Grazie per la risposta molto veloce, davvero aiutato. – igeer12

+0

@ user2905685 felice di sentirlo. Prego. – Prabhakaran

+0

Sto avendo lo stesso problema, ma la stringa che sto usando nextLine() finisce per essere vuota. Ecco come appare il mio codice: 'System.out.print (" Targa: "); String license = sc.nextLine(); '. Lo scanner è cambiato dopo che questa risposta è stata pubblicata? –

2

scanner.next(); richiede solo la parola successiva. scanner.nextLine(); dovrebbe funzionare. Spero che questo aiuti

1

Provare ad usare questa

String name = scanner.nextLine(); 
3

Da Scanner documentazione:

Un Scanner rompe il suo input in token utilizzando un modello delimitatore, che di default corrisponde a spazi bianchi.

e

public String next()

trova e restituisce il token successivo completo da questo scanner. Un token completo è preceduto e seguito da un input che corrisponde al pattern delimitatore.

Questo significa che il modello delimitatore è "spazio bianco". Questo divide il tuo testo nello spazio. Utilizzare nextLine() per ottenere l'intera linea.

13

provare a sostituire il codice

String name = scanner.nextLine(); 

invece

String name = scanner.next(); 

next() può leggere l'ingresso solo fino al space. Non può leggere due parole separate da space. Inoltre, next() posiziona il cursore sulla stessa riga dopo aver letto l'input.

nextLine() letture di input compreso space tra le parole (vale a dire fino alla fine della riga \n). Una volta letto l'input, nextLine() posiziona il cursore nella riga successiva.

Problemi correlati