Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
2
respuestas

[Proyecto] Verificación de compatibilidad para donar sangre

import java.util.Scanner;

public class EsCompatible {
    /*
    María trabaja en un banco de sangre y necesita verificar si un donante es compatible para donar sangre.
    Para ser compatible, el donante debe cumplir con los siguientes criterios:
    - Tener entre 18 y 65 años.
    - Pesar más de 50 kg.

    Ella desea un programa que reciba la edad y el peso del donante e indique si es compatible para donar sangre.
    Si no lo es, el programa debe indicar qué criterio no fue cumplido.
    ¿Cómo crearías un programa que reciba la edad y el peso del donante y muestre un mensaje
     indicando si es compatible o no, además de informar qué criterio no fue cumplido, si es el caso?
     */

    public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in);
        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 < 65 && edad > 18 && peso > 50){
            System.out.println("El donante es compatible");
        }else{
            System.out.println("El donante no es compatible");
            if(peso<50){
                System.out.println("Motivo: Debe pesar más de 50kg");
            }else{
                System.out.println("Motivo: Debe tener entre 18 y 65 años.");
            }
        }
        scanner.close();
    }
}
2 respuestas

¡Hola Adelina!

He revisado tu código y estás muy cerca de conseguir lo que necesitas. Sin embargo, hay un pequeño error en la lógica de las condiciones if que impide que el programa funcione correctamente en todos los casos. Vamos a corregirlo.

El problema está en la condición if que verifica si el donante es compatible. Actualmente, tienes if(edad < 65 && edad > 18 && peso > 50), lo cual excluye a los donantes que tienen exactamente 18 o 65 años. Para incluir estos casos, deberías usar if(edad <= 65 && edad >= 18 && peso > 50).

Además, en la parte donde verificas qué criterio no fue cumplido, es mejor verificar ambos criterios por separado para dar el mensaje correcto. Aquí tienes una versión corregida del código:

import java.util.Scanner;

public class EsCompatible {

    public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in);
        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 <= 65 && edad >= 18 && peso > 50) {
            System.out.println("El donante es compatible");
        } else {
            System.out.println("El donante no es compatible");
            if (edad < 18 || edad > 65) {
                System.out.println("Motivo: Debe tener entre 18 y 65 años.");
            }
            if (peso <= 50) {
                System.out.println("Motivo: Debe pesar más de 50kg");
            }
        }
        scanner.close();
    }
}

Con estas modificaciones, el programa debería funcionar correctamente según los criterios que mencionaste. Espero que esto te ayude y que puedas seguir avanzando con tu proyecto. ¡Buenos estudios!

¡Hola Adelina, espero que estés bien!

He revisado tu código y estás muy cerca de conseguir lo que necesitas. Sin embargo, hay un pequeño error en la lógica de las condiciones if que impide que el programa funcione correctamente en todos los casos. Vamos a corregirlo.

El problema está en la condición if que verifica si el donante es compatible. Actualmente, tienes if(edad < 65 && edad > 18 && peso > 50), lo cual excluye a los donantes que tienen exactamente 18 o 65 años. Para incluir estos casos, deberías usar if(edad <= 65 && edad >= 18 && peso > 50).

Además, en la parte donde verificas qué criterio no fue cumplido, es mejor verificar ambos criterios por separado para dar el mensaje correcto.

Con estas modificaciones, el programa debería funcionar correctamente según los criterios que mencionaste. Espero que esto te ayude y que puedas seguir avanzando con tu proyecto. ¡Bons estudos!