Java - ¿Al ingresar una oración solo lee la primera palabra en el StringTokenizaer?

 
Vista:
sin imagen de perfil

¿Al ingresar una oración solo lee la primera palabra en el StringTokenizaer?

Publicado por diego (1 intervención) el 28/04/2015 16:21:36
Estoy ingresando una palabra como "Diego Juega futbol"

Al pasar solo lee la cadena Diego y finaliza

1
2
3
4
5
6
7
8
9
10
System.out.println("Escribe una palabra");
    String oracion = sc.next();
    StringTokenizer st = new StringTokenizer(oracion, " "); //con esto creas el tokenizer y le pasas la cadena como parametro 
 
    while(st.hasMoreTokens()) { //este ciclo es para comprobar cuando se acaba de procesar tu cadena 
        String palabra = st.nextToken(); // esto lee la palabra siguiente en la cadena
        System.out.println(palabra);
 
    }
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alberto
Val: 308
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

¿Al ingresar una oración solo lee la primera palabra en el StringTokenizaer?

Publicado por Alberto (303 intervenciones) el 28/04/2015 17:11:31
Hola...

Lo que pasa es que la clase Scanner no reconoce el espacio como una continuación de tu cadena, por lo tanto siempre retorna el primer valor que escribas ya que podemos decir que lee hasta donde encuentra una interrupción en tu cadena; es decir, espacio, a continuación te dejo dos opciones que responden correctamente a tu problema.

1.- Cambiar el delimitador que usas al momento de ingresar una cadena; es decir, cambiar "Diego Juega Futbol" por "Diego,Juega,Futbol", con la coma como delimitador el Scanner funcionara como debe ser y tu programa lanzara el resultado esperado.

2.- Cambiar la clase Scanner por BufferedReader la cual si te permitiría leer la cadena completamente, en este caso "Diego Juega Futbol" y el Tokenizer funcionaría correctamente. Te proporciono un ejemplo sencillo...

1
2
3
4
5
6
7
8
9
10
11
try {
	BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
	System.out.print("Escribe una oracion: ");
	String oracion = reader.readLine();
	StringTokenizer st = new StringTokenizer(oracion);
	while (st.hasMoreElements()) {
		System.out.println(st.nextElement());
	}
} catch (Exception e) {
	e.printStackTrace();
}

Sin mas que comentar, cualquier duda y/o inconveniente, aquí estamos. Suerte!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Julio Cesar

¿Al ingresar una oración solo lee la primera palabra en el StringTokenizaer?

Publicado por Julio Cesar (30 intervenciones) el 28/04/2015 17:47:46
hola, en vez de usar el metodo next() de la clase Scanner debes usar el nextLine() que lee toda la linea, next() solo lee una cadena hasta encontrar el primer espacio....
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar