Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
2
respuestas

[Duda] Problemas con Scanner

Al usar escanner me da problemas usando el método nextLine() para peliculas separadas por espacios, por ejemplo: Harry Potter, a que se debe? usando solo next() es que aparentemente funciona

public class PrincipalConBusqueda {

    public static void main(String[] args) throws IOException, InterruptedException {
        Scanner scanner = new Scanner(System.in);
        System.out.println("Escriba el nombre de una pelicula: ");
        String busqueda = scanner.next();
        String clave = "45813fc4";
        String direccion = "http://www.omdbapi.com/?t=" + busqueda + "&apikey=" + clave;

        try (HttpClient client = HttpClient.newHttpClient()) {

            HttpRequest request = HttpRequest.newBuilder()
                    .uri(URI.create(direccion))
                    .build();

            HttpResponse<String> response = client
                    .send(request, HttpResponse.BodyHandlers.ofString());

            System.out.println(response.body());
        }
    }
}
2 respuestas

Hola, Enmanuel, espero que estés bien

Entiendo que estás teniendo problemas al usar nextLine() con el Scanner para leer nombres de películas que contienen espacios, como "Harry Potter". El método next() solo captura hasta el primer espacio, lo que puede ser útil en algunos casos, pero no es lo que necesitas cuando el nombre de la película tiene más de una palabra.

En tu caso, lo que necesitas es usar nextLine() para capturar toda la línea de entrada, incluyendo los espacios. Sin embargo, parece que hay un pequeño error en tu código que podría estar causando el problema. Cuando usas next(), el Scanner no consume el carácter de nueva línea (enter) después de la entrada, lo que puede interferir con la siguiente llamada a nextLine().

Para solucionarlo, puedes intentar lo siguiente:

  1. Después de usar next(), añade una línea adicional para consumir el resto de la línea:
String busqueda = scanner.next();
scanner.nextLine(); // Consume el resto de la línea
  1. O, simplemente, usa nextLine() desde el principio si quieres capturar todo el nombre de la película, incluyendo los espacios:
String busqueda = scanner.nextLine();

Asegúrate de que el código que usas para capturar la entrada del usuario esté alineado con el ejemplo proporcionado en la actividad, que utiliza nextLine() para capturar la entrada completa.

Espero que esto te ayude a resolver el problema. ¡Bons estudios!

Cuando utilizo solo nextLine() me da el siguiente error: veo que solo reconoce la segunda palabra de mi entrada en consola

Captura de pantalla del código