Outra boa abordagem é fazer uma verificação ao passar os valores de int idade = entrada.nextInt();
e int peso = entrada.nextInt();
, para evitar um possível InputMismatchException.
Aqui uma abordagem tratando isso:
public class Main {
public static void main(String[] args) {
Scanner entrada = new Scanner(System.in).useLocale(Locale.ROOT);
try {
System.out.println("Informe sua idade: ");
int idade = entrada.nextInt();
System.out.println("Informe seu peso: (em kg) ");
int peso = entrada.nextInt();
if (idade < 18 || idade > 65) {
System.out.println("Idade fora da faixa permitida para doação.");
} else if (peso < 50) {
System.out.println("Peso insuficiente para doar.");
} else {
System.out.println("O doador é compatível.");
}
} catch (InputMismatchException e) {
System.out.println("Mistake: Enter invalid input argument");
}
entrada.close();
}
}
Outra abordagem é tratar a possível entrada de um dado do tipo int
, mas que não faça sentido — como, por exemplo, valores negativos para idade e/ou peso. Nesse caso, poderíamos fazer uma verificação e lançar uma exceção caso isso ocorra.
Idade
if (idade < 0) throw new InputMismatchException("Enter invalid input argument");
Peso
if (peso < 0) throw new InputMismatchException("Enter invalid input argument");
Desta forma, evitamos incoerências nos dados que poderiam afetar o resultado final do processo. Este é o seu código refatorado:
package br.com.exerciciosdeIFeElse;
import java.util.InputMismatchException;
import java.util.Locale;
import java.util.Scanner;
public class VerificaDoacaoDeSangue {
public static void main(String[] args) {
Scanner entrada = new Scanner(System.in).useLocale(Locale.ROOT);
try {
System.out.println("Informe sua idade: ");
int idade = entrada.nextInt();
if (idade < 0) throw new InputMismatchException("Enter invalid input argument");
System.out.println("Informe seu peso: (em kg) ");
int peso = entrada.nextInt();
if (peso < 0) throw new InputMismatchException("Enter invalid input argument");
if (idade < 18 || idade > 65) {
System.out.println("Idade fora da faixa permitida para doação.");
} else if (peso < 50) {
System.out.println("Peso insuficiente para doar.");
} else {
System.out.println("O doador é compatível.");
}
} catch (InputMismatchException e) {
System.out.println("Mistake: Enter invalid input argument");
}
entrada.close();
}
}