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

Verificación de compatibilidad para donar sangre

public class VerificacionCompatibilidad {
    public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in);
        boolean compatible = true;

        System.out.println("Ingrese la edad del donante");
        int edad = scanner.nextInt();
        System.out.println("Ingrese el peso del donante (en Kg)");
        double peso = scanner.nextDouble();

        if (edad < 18) {
            compatible = false;
            System.err.println("El donante no es compatible");
            System.err.println("Motivo: Debe tener 18 años como minimo\n");
        }

        if (edad > 65) {
            compatible = false;
            System.err.println("El donante no es compatible");
            System.err.println("Motivo: Debe tener 65 años como maximo\n");
        }

        if (peso <= 50) {
            compatible = false;
            System.err.println("El donante no es compatible");
            System.err.println("Motivo: El peso debe ser mayor a 50 kg\n");
        }

        if (compatible) {
            System.out.println("\nEl donante es compatible");
        }
    }
}
1 respuesta

Hola Ivania, espero que estés bien

Tu código está casi perfecto para verificar la compatibilidad de un donante de sangre. Sin embargo, hay un pequeño ajuste que puedes hacer para que el mensaje de salida sea más claro y se ajuste exactamente a lo que se pide en el ejercicio. Actualmente, si el donante no cumple con más de un criterio, se imprimen múltiples mensajes de "El donante no es compatible", lo cual puede ser redundante.

Aquí tienes una versión ajustada de tu código que imprime un único mensaje de incompatibilidad con todos los motivos listados:

import java.util.Scanner;

public class VerificacionCompatibilidad {
    public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in);
        boolean compatible = true;
        StringBuilder motivos = new StringBuilder();

        System.out.println("Ingrese la edad del donante");
        int edad = scanner.nextInt();
        System.out.println("Ingrese el peso del donante (en Kg)");
        double peso = scanner.nextDouble();

        if (edad < 18 || edad > 65) {
            compatible = false;
            motivos.append("Debe tener entre 18 y 65 años.\n");
        }

        if (peso <= 50) {
            compatible = false;
            motivos.append("El peso debe ser mayor a 50 kg.\n");
        }

        if (compatible) {
            System.out.println("\nEl donante es compatible");
        } else {
            System.err.println("\nEl donante no es compatible.");
            System.err.println("Motivo(s): " + motivos.toString());
        }
    }
}

En esta versión, he utilizado un StringBuilder para acumular los motivos de incompatibilidad, y luego los imprimo todos juntos si el donante no es compatible. Esto hace que el mensaje de salida sea más limpio y fácil de entender.

Espero que esto te ayude y que sigas disfrutando de tus estudios de Java. ¡Bons estudios!