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!