3
respostas

Desafio: Verificação de desconto

Boa tarde,

Realizando o desafio de verificação de desconto.
Como se aplicaria a forma de entrada de dados em uma variável booleana quando o usuário informar se é estudante ou não?

Por não saber, desenvolvi essa lógica a partir de uma variável do tipo String e realizei a comparação por meio do equalsIgnoreCase().
Detalhe: meu java está na versão 25.

import java.util.Scanner;

void main() {
Scanner scan = new Scanner(System.in);
double valorIngresso = 47.50;
String confirma_estudante = "Sim";

IO.print("-------------------------------");
IO.print("\nInforme sua idade:");
int idade = scan.nextInt();

IO.print("-------------------------------");
IO.print("\nÉ estudante:");
String status_estudante = scan.next();

if (idade < 18){
    IO.print("-------------------------------"
            +"\nCliente tem direito a meia-entrada."
            + "\nValor do ingresso: R$" + (valorIngresso/2));

} else if (idade >= 18 && status_estudante.equalsIgnoreCase(confirma_estudante)){
    IO.print("-------------------------------"
            +"\nCliente tem direito a meia-entrada."
            + "\nValor do ingresso: R$" + (valorIngresso/2));

} else {
    IO.print("-------------------------------"
            +"\nCliente não tem direito a meia-entrada."
            + "\nValor do ingresso: R$" + valorIngresso);
}

}

Matricule-se agora e aproveite até 50% OFF

O maior desconto do ano para você evoluir com a maior escola de tecnologia

QUERO APROVEITAR
3 respostas

Oi, Joao! Como vai?

Gostei da sua lógica usando equalsIgnoreCase() para comparar a resposta do usuário, ficou bem clara e funcional. Com o que você descreveu, usar uma String é uma boa saída, mas dá pra simplificar usando um boolean diretamente.

Uma dica interessante para o futuro é usar o método nextBoolean() do Scanner. Veja este exemplo:


Scanner scan = new Scanner(System.in);
System.out.println("Você é estudante? (true/false)");
boolean estudante = scan.nextBoolean();

if (estudante) {
    System.out.println("Tem direito à meia-entrada.");
} else {
    System.out.println("Não tem direito à meia-entrada.");
}

Esse código lê um valor booleano (true ou false) diretamente do usuário e simplifica a condição no if.

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

Bom dia, Armano.

Entendi como aplicar.
Mas, visando a forma como é informado, o usuário terá que escrever TRUE ou FALSE para relatar se o cliente é um estudante ou não. Nesse caso, teria que fazer um comparativo com o if() para dar os os termos "SIM" ao TRUE e "NÃO" ao FALSE, isso visando a entrada de dados como String. De qualquer forma esta seria a forma correta de resolver este problema, certo?

Oi, Joao!

Sobre sua última dúvida, sim, sua interpretação está correta. Como o método nextBoolean() espera receber true ou false, se você quiser que o usuário digite "Sim" ou "Não", o ideal é continuar com a entrada de dados do tipo String e depois converter essa resposta para boolean. Resolva fazendo o seguinte:


import java.util.Scanner;

public class VerificaDesconto {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        double valorIngresso = 47.50;

        System.out.println("-------------------------------");
        System.out.println("Informe sua idade:");
        int idade = scan.nextInt();
        scan.nextLine(); // consome o Enter pendente

        System.out.println("-------------------------------");
        System.out.println("É estudante? (Sim/Não)");
        String resposta = scan.nextLine();

        boolean estudante = resposta.equalsIgnoreCase("Sim");

        if (idade < 18 || estudante) {
            System.out.println("-------------------------------");
            System.out.println("Cliente tem direito à meia-entrada.");
            System.out.println("Valor do ingresso: R$" + (valorIngresso / 2));
        } else {
            System.out.println("-------------------------------");
            System.out.println("Cliente não tem direito à meia-entrada.");
            System.out.println("Valor do ingresso: R$" + valorIngresso);
        }

        scan.close();
    }
}

Dessa forma, o usuário pode digitar "Sim" ou "Não", e o código converte automaticamente para um valor booleano, simplificando a validação.

Fico à disposição.