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
*******************************
""");
}
}