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

Desafio: Simulador de pedidos em uma cafeteria

O desafio consiste em registrar os pedidos de cada cliente, calcular o valor total e fornecer um desconto de 10% para clientes que são cadastrados.

Variáveis

int quantidadeItens
String nomeItem
double precoItem
double valorTotal = 0
boolean clienteCadastrado

Perguntar quantidade de itens

Para cada item:
Perguntar nome do item
Perguntar preço do item
Somar preço ao valorTotal

Perguntar se o cliente é cadastrado

Se cliente for cadastrado:
Aplicar desconto de 10%
Exibir valor com desconto

Senão:
Exibir valor total sem desconto

Código

public class Cafeteria {

public static void main(String[] args) {

    Scanner scanner = new Scanner(System.in);

    int quantidadeItens;
    String nomeItem;
    double precoItem;
    double valorTotal = 0;
    double valorFinal;

    System.out.println("Quantos itens o cliente deseja? ");
    quantidadeItens = scanner.nextInt();

    scanner.nextLine();

    for (int i = 1; i <= quantidadeItens; i++) {

        System.out.println("Nome do item: ");
        nomeItem = scanner.nextLine();

        System.out.println("Preço do item: ");
        precoItem = scanner.nextDouble();

        scanner.nextLine();

        valorTotal += precoItem;
    }

    System.out.println("Cliente cadastrado? (true/false)");
    boolean clienteCadastrado = scanner.nextBoolean();

    if (clienteCadastrado) {

        valorFinal = valorTotal - (valorTotal * 0.10);

        System.out.println("Valor com desconto: R$ " + valorFinal);

    } else {

        System.out.println("Valor total: R$ " + valorTotal);
    }

    scanner.close();
}

}

1 resposta
solução!

Olá, Rafael. Como vai?

Parabéns pela excelente resolução do desafio! Você aplicou os pilares do pensamento computacional de forma muito clara: utilizou a decomposição para quebrar o problema em etapas (variáveis, entrada, processamento e saída) e o reconhecimento de padrões ao identificar a necessidade de uma estrutura de repetição para os itens.

O seu código em Java está muito bem escrito. Gostaria de destacar alguns pontos positivos e compartilhar algumas boas práticas que vão elevar ainda mais a qualidade dos seus projetos:

  • Gerenciamento do Buffer: Foi excelente você ter utilizado o scanner.nextLine() após o nextInt() e nextDouble(). Esse é um detalhe técnico que muitos iniciantes esquecem e acaba causando erros na leitura das strings seguintes.
  • Operadores de Atribuição: Você utilizou corretamente o valorTotal += precoItem, que é uma forma elegante e performática de acumular valores.
  • Lógica de Desconto: A aplicação do desconto de 10% através da fórmula valorTotal * 0.10 está correta e fácil de ler.

Como sugestão de melhoria e boas práticas, deixo dois pontos para você refletir:

  1. Uso de Constantes: Para valores fixos como o percentual de desconto, é uma boa prática utilizar constantes. Isso evita os chamados "números mágicos" no meio do código. Exemplo: final double PERCENTUAL_DESCONTO = 0.10;.
  2. Formatação de Moeda: Como estamos lidando com valores monetários, uma dica legal é usar o System.out.printf para garantir que o valor seja exibido sempre com duas casas decimais, assim:
System.out.printf("Valor com desconto: R$ %.2f%n", valorFinal);

Além disso, note que você definiu a variável nomeItem, mas não a utilizou na saída final. Em um cenário real, você poderia concatenar esses nomes em uma única String para exibir um "resumo do pedido" ao final da execução.

Sua base de lógica e organização de código está muito sólida. Continue assim!

Espero que possa ter lhe ajudado!