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

Mi propuesta de solución...

A tener en cuenta:

  • Me apoyo del método isEmpty() que me indica si la longitud de un String es cero.
  • Me apoyo del méotodo trim() que retira los espacios en blanco al inicio y al final de un String.
  • Me apoyo del método concat() para concatenar Strings.
  • El método processData(int edad, int peso) tiene la lógica del ejercicio.
import java.util.InputMismatchException;
import java.util.Scanner;

public class BloodBank {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int edad;
        int peso;
        String opt = "0";

        showHeader();

        do {
            System.out.print("\n* Ingrese la edad del donante: ");
            try {
                edad = scanner.nextInt();
                System.out.print("* Ingrese el peso del donante (en kg): ");
                peso = scanner.nextInt();
                processData(edad, peso);

                System.out.print("Para terminar digite 0 o cualquier tecla para calcular otro donante: ");
                opt = scanner.next();
            } catch (InputMismatchException _) {
                System.out.println("\n¡Ingrese un valor válido, intenta de nuevo!\n");
                scanner.nextLine();
            }
        } while (!opt.equals("0"));

        System.out.println("\nClosing app... Thanks for using our service");

        scanner.close();
    }

    private static void processData(int edad, int peso) {
        String motivo = "";
        if (edad < 18 || edad > 65) {
            motivo = motivo.concat("Debe tener entre 18 y 65 años.");
        }
        if (peso <= 50) {
            motivo = motivo.concat(" Debe pesar más de 50 kg.");
        }

        if (motivo.isEmpty()) System.out.println("\nEl donante es compatible.\n");
        else System.out.printf("""
                
                El donante no es compatible.
                Motivo: %s
                
                """, motivo.trim());
    }

    private static void showHeader() {
        System.out.print("""
                
                *******************************
                    Welcome to triangle app
                *******************************
                """);
    }
}
1 respuesta

Hola Wilmar, espero que estés bien

Tu propuesta de solución para el ejercicio de verificación de compatibilidad para donar sangre parece estar bien encaminada. Has utilizado métodos útiles como isEmpty(), trim() y concat() para manejar las cadenas de texto, lo cual es excelente.

Aquí hay algunos puntos que podrías considerar para asegurarte de que tu programa funcione como se espera:

  1. Validación de entrada: Ya estás manejando excepciones para entradas inválidas, lo que es una buena práctica. Asegúrate de que el programa maneje correctamente cualquier entrada inesperada.

  2. Mensajes claros: La forma en que estás concatenando los motivos de incompatibilidad es clara y permite que el usuario entienda fácilmente por qué un donante no es compatible.

  3. Pruebas adicionales: Considera probar tu programa con diferentes combinaciones de edades y pesos para asegurarte de que todos los casos se manejan correctamente. Por ejemplo:

    • Edad dentro del rango pero peso insuficiente.
    • Peso suficiente pero edad fuera del rango.
    • Ambos criterios cumplidos.
  4. Uso de printf para formato: Estás usando printf para formatear la salida, lo cual es una buena elección para mantener los mensajes bien estructurados.

Espero que estos consejos te sean útiles mientras continúas trabajando en tu solución. ¡Buena suerte con tu aprendizaje de Java!

Espero haber ayudado y buenos estudios!