¡Hola, Bianca, espero que estés bien!
Veo que estás trabajando en un programa para verificar la compatibilidad de un donante de sangre. Tu código está casi completo, pero hay un pequeño detalle que podrías ajustar para que funcione correctamente en todos los casos.
El problema está en la estructura de las condiciones else if
. Actualmente, la condición else if (edad < 18 || edad > 65 && peso >= 50)
no está evaluando correctamente debido a la precedencia de los operadores lógicos. Para asegurarte de que se evalúe correctamente, deberías usar paréntesis para agrupar las condiciones de edad. Aquí tienes una versión ajustada de tu código:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
int edad;
double peso;
Scanner entrada = new Scanner(System.in);
System.out.println("Ingrese la edad del donante:");
edad = entrada.nextInt();
System.out.println("Ingrese el peso del donante (en kg):");
peso = entrada.nextDouble();
if (edad >= 18 && edad <= 65 && peso > 50){
System.out.println("El donante es compatible");
} else if (edad >= 18 && edad <= 65 && peso <= 50){
System.out.println("El donante no es compatible.\nMOTIVO: Debe pesar más de 50 kg");
} else if ((edad < 18 || edad > 65) && peso > 50){
System.out.println("El donante no es compatible.\nMOTIVO: Debe tener entre 18 y 65 años");
} else {
System.out.println("El donante no es compatible.\nMOTIVO: Debe tener entre 18 y 65 años y pesar más de 50 kg");
}
}
}
He añadido un else
final para cubrir el caso en que el donante no cumpla con ninguno de los dos criterios. Esto asegura que siempre se muestre un mensaje claro sobre qué criterio no se cumplió.
Espero que esto te ayude y que tu programa funcione como esperas. ¡Bons estudios!