¡Hola Estudiante, espero que estés bien!
Parece que estás en el camino correcto con tu función verificarDonante. Sin embargo, para cumplir con el requisito de especificar exactamente qué criterio no fue cumplido, podrías ajustar un poco el código para verificar cada condición por separado y proporcionar un mensaje más detallado. Aquí te dejo un ejemplo de cómo podrías hacerlo:
public void verificarDonante(int edad, double peso) {
boolean edadValida = edad >= 18 && edad <= 65;
boolean pesoValido = peso > 50;
if (edadValida && pesoValido) {
System.out.println("Puede donar sangre.");
} else {
System.out.println("El donante no es compatible.");
if (!edadValida) {
System.out.println("Motivo: Debe tener entre 18 y 65 años.");
}
if (!pesoValido) {
System.out.println("Motivo: Debe pesar más de 50 kg.");
}
}
}
Con este ajuste, el programa verificará cada condición por separado y te dará un mensaje específico para cada criterio que no se cumpla. Por ejemplo, si la edad está fuera del rango y el peso es insuficiente, ambos mensajes de error se mostrarán.
Espero que esta sugerencia te ayude a mejorar tu programa. ¡Espero haber ayudado y buenos estudios!