1
resposta

DÚVIDA

Olá,

Esta é a minha solução:

import java.util.Scanner;

public class VerificandoCompatibilidadeDeSangue {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in); //Scanner scanner = new Scanner(System.in); cria um objeto Scanner que lê a entrada do teclado (System.in). Esse objeto scanner é então usado para obter a idade e o peso do doador. System.in é um objeto que permite meu programa ler dados de entrada do usuário através do teclado.
System.out.println("Digite a idade do doador: "); //println é um método usado para imprimir uma linha de texto na tela (saída padrão).
int idadeDoDoador = scanner.nextInt();

    System.out.println("Digite o peso do doador: ");
    int pesoDoDoador = scanner.nextInt();

    if (idadeDoDoador >=18 && pesoDoDoador >50) {// talvez fosse mais seguro eu ter declarado previarmente uma variável com esse valor de 18 e de 50? 
        System.out.println("Legal, você é compatível para doação de sangue");

    } else {
        System.out.println("Desculpe, infelizmente você não é compatível para doação de sangue.");
        System.out.println("Motivo: Deve ter entre 18 e 65 anos e pesar mais de 50kg. ");
    }
    scanner.close();
}

}

&

Esta é a solução do instrutor:

import java.util.Scanner;

public class VerificaDoacaoSangue {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("Digite a idade do doador: ");
int idade = scanner.nextInt();

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

    boolean idadeValida = idade >= 18 && idade <= 65;      
    boolean pesoValido = peso > 50;      

    if (idadeValida && pesoValido) {      
        System.out.println("O doador é compatível para doação de sangue.");  
    } else {      
        System.out.println("O doador não é compatível. Motivo:");      
        if (!idadeValida) {      
            System.out.println("- Deve ter entre 18 e 65 anos.");      
        }      
        if (!pesoValido) {      
            System.out.println("- Deve pesar mais de 50 kg.");      
        }      
    } 
    scanner.close();      
}      

}

Gostaria de saber, por gentileza, se consegui atender ao que se pede a questão. Conforme o enunciado da questão, pensei que a saída tivesse que ser algo breve de tipo, pode ou não ser doador de sangue q foi o q fiz. Mas na resolução do instrutor, ele aparentemente detalha, SEPARADAMENTE, por exemplo o pq a pessoa não pode dizendo q doador tem q ter entre 18 e 65 anos ou a pessoa tem q pesar mais de 50 kg. Pode me ajudar a entender se a minha solução está correta (ou não) a partir do enunciado da questão. Eu acho q entendi o q o instruto fez... ele na parte do if diz q se a pessoa tiver o peso e idade corretos é doador compatível. Se não tiver idade, então não é doador por conta da idade. Se não tiver peso suficiente, tbm n é pq conta do peso. Não é isso? Para finalizar, gostaria de entender o pq o instrutor usou o boolean para declarar varivael e se é necessário mesmo declarar essas variaveis, visto que na minha solução não declarei. Agradeço toda a atenção e esforço colocados na minha solicitação. Muito obg! Se puder oferecer feedback e dicas sobre o q fiz, agradeço mtão tb!!! <3 BRIGADÃO.

1 resposta

Olá, Jackeline! Tudo bem?

Primeiramente, parabéns pelo esforço em desenvolver a sua solução! Vamos analisar o que você fez em comparação com a solução do instrutor.

A sua solução está correta em termos de lógica básica para verificar se o doador é compatível ou não, considerando as condições de idade e peso. No entanto, de acordo com o enunciado da questão, é importante que o programa não apenas informe se o doador é compatível, mas também detalhe qual critério não foi atendido, caso ele não seja compatível.

O instrutor fez isso utilizando variáveis booleanas para verificar separadamente se a idade e o peso são válidos. Isso permite que o programa forneça uma mensagem mais detalhada sobre qual critério não foi atendido, como exigido pelo enunciado.

Sobre o uso de variáveis booleanas, elas são uma forma prática de armazenar condições que podem ser verificadas mais tarde no código. Isso ajuda a tornar o código mais legível e organizado, além de facilitar a manutenção. No seu caso, você poderia adaptar a sua solução para incluir essas verificações separadas, como o instrutor fez.

Aqui está uma sugestão de como você poderia modificar o seu código para atender completamente ao enunciado:

import java.util.Scanner;

public class VerificandoCompatibilidadeDeSangue {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("Digite a idade do doador: ");
        int idadeDoDoador = scanner.nextInt();

        System.out.println("Digite o peso do doador: ");
        int pesoDoDoador = scanner.nextInt();

        boolean idadeValida = idadeDoDoador >= 18 && idadeDoDoador <= 65;
        boolean pesoValido = pesoDoDoador > 50;

        if (idadeValida && pesoValido) {
            System.out.println("Legal, você é compatível para doação de sangue");
        } else {
            System.out.println("Desculpe, infelizmente você não é compatível para doação de sangue.");
            if (!idadeValida) {
                System.out.println("Motivo: Deve ter entre 18 e 65 anos.");
            }
            if (!pesoValido) {
                System.out.println("Motivo: Deve pesar mais de 50 kg.");
            }
        }
        scanner.close();
    }
}

Espero que isso ajude a esclarecer suas dúvidas e a melhorar ainda mais o seu código. Continue com esse excelente trabalho!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.