Entrada de la cadena del escáner Java
string java.util.scanner (4)
Cuando lees en el año, mes, hora, minutos con algo como nextInt()
, deja el resto de la línea en el analizador / búfer (incluso si está en blanco), así que cuando llamas a nextLine()
estás leyendo el resto de esta primera línea. .
Le sugiero que use scan.next()
lugar de scan.nextLine()
.
Estoy escribiendo un programa que usa una clase de Evento, que contiene una instancia de un calendario y una descripción de tipo Cadena. El método para crear un evento utiliza un escáner para tomar un mes, día, año, hora, minuto y una descripción. El problema que tengo es que el método Scanner.next () solo devuelve la primera palabra antes de un espacio. Entonces, si la entrada es "Mi cumpleaños", la descripción de esa instancia de un evento es simplemente "Mi".
Investigué un poco y descubrí que la gente usó Scanner.nextLine () para este problema, pero cuando lo intento, simplemente omite donde debería ir la entrada. Aquí es cómo se ve una sección de mi código:
System.out.print("Please enter the event description: ");
String input = scan.nextLine();
e.setDescription(input);
System.out.println("Event description" + e.description);
e.time.set(year, month-1, day, hour, min);
addEvent(e);
System.out.println("Event: "+ e.time.getTime());
Y esta es la salida que obtengo:
Please enter the event description: Event description
Event: Thu Mar 22 11:11:48 EDT 2012
Omite el espacio para ingresar la Cadena de descripción y, como resultado, la descripción (que inicialmente se establece en un espacio en blanco - ""), nunca se cambia.
¿Cómo puedo arreglar esto?
Cuando lees en el año, mes, hora, minutos con algo como nextInt (), deja el resto de la línea en el analizador / búfer (incluso si está en blanco), así que cuando llamas a nextLine () estás leyendo el resto de esta primera línea. .
Le sugiero que llame a scan.nextLine () antes de imprimir su próxima solicitud para descartar el resto de la línea.
Si usa el método nextLine () inmediatamente después del método nextInt (), nextInt () lee tokens enteros; debido a esto, el último carácter de nueva línea para esa línea de entrada de enteros aún está en la cola en el búfer de entrada y la siguiente nextLine () leerá el resto de la línea de enteros (que está vacía). Así que leemos puede leer el espacio vacío para que otra cadena pueda funcionar. Compruebe el código de abajo.
import java.util.Scanner;
solución de clase pública {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int i = scan.nextInt();
Double d = scan.nextDouble();
String f = scan.nextLine();
String s = scan.nextLine();
// Write your code here.
System.out.println("String: " + s);
System.out.println("Double: " + d);
System.out.println("Int: " + i);
}
}
Scanner ss = new Scanner(System.in);
System.out.print("Enter the your Name : ");
// Below Statement used for getting String including sentence
String s = ss.nextLine();
// Below Statement used for return the first word in the sentence
String s = ss.next();