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

[Sugerencia] Verificación de compatibilidad para donar sangre (Mi soluciòn)

    import java.util.Scanner;

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

    int edad = 0;
    double peso = 0.0;

    // Validar edad (debe ser entero positivo)
    while (true) {
        System.out.print("Ingrese la edad del donante: ");
        String entradaEdad = scanner.nextLine().trim();

        if (entradaEdad.matches("^\\d+$")) {
            edad = Integer.parseInt(entradaEdad);
            if (edad > 0) break;
            else System.out.println("La edad debe ser mayor que cero.");
        } else {
            System.out.println("Entrada inválida. Ingrese un número entero positivo para la edad.");
        }
    }

    // Validar peso (debe ser número positivo, entero o decimal)
    while (true) {
        System.out.print("Ingrese el peso del donante (en kg): ");
        String entradaPeso = scanner.nextLine().trim();

        if (entradaPeso.matches("^\\d+(\\.\\d+)?$")) {
            peso = Double.parseDouble(entradaPeso);
            if (peso > 0) break;
            else System.out.println("El peso debe ser mayor que cero.");
        } else {
            System.out.println("Entrada inválida. Ingrese un número válido para el peso (sin letras ni símbolos).");
        }
    }

    // Verificar compatibilidad
    boolean edadValida = (edad >= 18 && edad <= 65);
    boolean pesoValido = (peso > 50);

    if (edadValida && pesoValido) {
        System.out.println("El donante es compatible para donar sangre.");
    } else {
        System.out.println("El donante no es compatible.");
        System.out.println("Motivo:");
        if (!edadValida) {
            System.out.println("- Debe tener entre 18 y 65 años.");
        }
        if (!pesoValido) {
            System.out.println("- Debe pesar más de 50 kg.");
        }
    }

    scanner.close();
}

}

1 respuesta

¡Hola Gina, espero que estés bien!

Tu solución para verificar la compatibilidad de un donante de sangre parece estar muy bien encaminada. Estás haciendo un gran trabajo al validar tanto la edad como el peso del donante antes de proceder con la verificación de compatibilidad. Aquí tienes algunos puntos que podrías considerar para mejorar o confirmar que tu solución está alineada con el ejercicio:

  1. Validación de Entrada: Estás utilizando expresiones regulares para asegurar que las entradas sean válidas, lo cual es excelente. Esto ayuda a evitar errores de formato y asegura que los datos procesados sean correctos.

  2. Lógica de Compatibilidad: Has implementado correctamente la lógica para verificar si el donante es compatible basándote en los criterios de edad y peso. Esto se alinea perfectamente con los requisitos del ejercicio.

  3. Mensajes de Salida: Estás proporcionando mensajes claros sobre por qué un donante podría no ser compatible, lo cual es útil para el usuario. Asegúrate de que los mensajes sean claros y específicos, como ya lo estás haciendo.

  4. Cierre del Scanner: Recuerda siempre cerrar el Scanner al final para liberar los recursos, lo cual ya estás haciendo correctamente.

Aquí tienes un ejemplo de cómo se vería la ejecución de tu programa:

Ingrese la edad del donante: 17
Ingrese el peso del donante (en kg): 55
El donante no es compatible.
Motivo:
- Debe tener entre 18 y 65 años.

Tu código ya cumple con los requisitos del ejercicio, así que sigue adelante con confianza. Espero que esta revisión te haya sido útil y te deseo muchos éxitos en tus estudios de Java.

¡Espero haber ayudado y buenos estudios!