Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Resolução

/*
    Maria trabalha em um banco de sangue e precisa verificar se um doador é compatível para doar sangue.
     Para ser compatível, o doador deve atender aos seguintes critérios:

    Ter entre 18 e 65 anos.

    Pesar mais de 50 kg.

    Ela deseja um programa que receba a idade e o peso do doador e informe se ele é compatível para doar
    sangue. Se não for, o programa deve indicar qual critério não foi atendido.

    Como você criaria um programa que receba a idade e o peso do doador e exiba uma mensagem indicando se
    ele é compatível ou não, além de informar o critério não atendido, se for o caso?
 */

package com.github.lucasdevrj.condicionais;

import java.util.Scanner;

public class VerificacaoCompatibilidadeDoacaoSangue {
    public static void main(String[] args) {
        int idadeMinimaDoador = 18;
        int idadeMaximaDoador = 65;
        double pesoMinimoDoador = 50.00;
        int idadeDoador = 0;
        double pesoDoador = 0.0;

        Scanner entrada = new Scanner(System.in);

        System.out.print("Digite a idade do doador: ");
        idadeDoador = entrada.nextInt();

        System.out.print("Digite o peso do doador (em kg): ");
        pesoDoador = entrada.nextDouble();

        entrada.close();

        boolean idadeValidaDoacao = idadeDoador >= idadeMinimaDoador && idadeDoador <= idadeMaximaDoador;
        boolean pesoValidoDoacao = pesoDoador > pesoMinimoDoador;

        if (!idadeValidaDoacao || !pesoValidoDoacao) {
            System.out.println("O doador não é compatível.");
            String motivo = idadeValidaDoacao ? "Motivo: Deve pesar mais de 50 kg."
                    :  "Motivo: Deve ter entre 18 e 65 anos.";
            System.out.println(motivo);
        } else {
            System.out.println("O doador é compatível.");
        }
    }
}

Insira aqui a descrição dessa imagem para ajudar na acessibilidade
Insira aqui a descrição dessa imagem para ajudar na acessibilidade
Beleza?

1 resposta
solução!

Olá, Lucas!

Meus parabéns por concluir o desafio de verificação de compatibilidade de doação de sangue. É excelente ver como você aplicou uma lógica refinada para não apenas validar o doador, mas também fornecer um feedback específico sobre o que impediu a doação.

A sua solução demonstra um ótimo domínio sobre o uso de variáveis booleanas e o operador ternário. Ao separar as validações em idadeValidaDoacao e pesoValidoDoacao, você deixou o código muito mais limpo e fácil de ler. Essa estrutura facilita ajustes futuros, caso as regras de saúde mudem, permitindo que você altere apenas as constantes no topo do programa.

E, você pode conferir mais detalhes sobre boas práticas de validação na documentação oficial sobre operadores lógicos em Java.

Conseguiu perceber como essa estrutura de validação por etapas é a mesma utilizada em formulários de cadastro de sites para garantir que todos os dados estejam corretos antes do envio?

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!