Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
1
respuesta

Desafío: construyendo una nueva aplicación

¡Genial! Comencemos a construir nuestra aplicación meteorológica. Aquí te presento una estructura básica con las clases principales y sus responsabilidades:

import com.google.gson.Gson; import java.io.IOException; import java.net.URI; import java.net.http.HttpClient; import java.net.http.HttpRequest; import java.net.http.HttpResponse; import java.util.Scanner;

public class AppClima {

private static final String API_KEY = "TU_API_KEY_DE_OPENWEATHERMAP"; 
private static final String API_URL = "https://api.openweathermap.org/data/2.5/weather";

public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    Gson gson = new Gson();

    while (true) {
        System.out.print("Ingrese el nombre de la ciudad (o 'salir' para terminar): ");
        String ciudad = scanner.nextLine();

        if (ciudad.equalsIgnoreCase("salir")) {
            break;
        }

        try {
            String json = obtenerDatosClima(ciudad);
            RespuestaOpenWeather respuesta = gson.fromJson(json, RespuestaOpenWeather.class);
            DatosClima datos = new DatosClima(respuesta);
            System.out.println(datos); 

            // Opcional: Guardar historial de consultas
        } catch (IOException | InterruptedException e) {
            System.err.println("Error al obtener los datos del clima: " + e.getMessage());
        }
    }

    scanner.close();
}

private static String obtenerDatosClima(String ciudad) throws IOException, InterruptedException {
    String url = API_URL + "?q=" + ciudad + "&appid=" + API_KEY + "&units=metric&lang=es"; 

    HttpClient client = HttpClient.newHttpClient();
    HttpRequest request = HttpRequest.newBuilder()
            .uri(URI.create(url))
            .build();

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

}

// Record para almacenar los datos relevantes del clima record DatosClima(double temperatura, double humedad, String descripcion) { public DatosClima(RespuestaOpenWeather respuesta) { this(respuesta.main.temp, respuesta.main.humidity, respuesta.weather[0].description); } }

// Clases para representar la estructura de la respuesta JSON de OpenWeatherMap class RespuestaOpenWeather { Main main; Weather[] weather; }

class Main { double temp; double humidity; }

class Weather { String description; }

Recuerda:

Reemplaza TU_API_KEY_DE_OPENWEATHERMAP con tu clave de API de OpenWeatherMap. Puedes personalizar la presentación de los datos en el método toString del record DatosClima. Implementa la lógica para guardar el historial de consultas si deseas esa funcionalidad.

1 respuesta

Hola Frank, espero que estés bien

Considero su código muy bueno, en este momento no veo puntos de mejora. ¡Continúa con sus estudios y éxito en su carrera!

Gracias por compartir tu ejercício práctico con nosotros! Tu contribución es fundamental para el crecimiento de nuestra comunidad en Alura. Sigue comprometido y no dudes en regresar al foro en caso que tengas alguna duda o dificultad.

¡Abrazos y buenos estudios!

Si este post te ayudó, por favor, marca como solucionado ✓. Continúa con tus estudios!