Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

1
resposta

[Projeto] Exercício 4

public class ClassificarPreco {

    public static void main(String[] args) {
        double preco = 201.56;
        String categoriaDescricao = "";

        if(preco <= 50){
            categoriaDescricao = "Economico";
        } else if(preco >= 50.01 && preco <= 200){
            categoriaDescricao = "Intermediario";
        } else if(preco >= 200){
            categoriaDescricao = "Premium";
        }

        System.out.println("Categoria do produto: "+ categoriaDescricao);
    }
}
1 resposta

Oii, Rick! Parabéns por concluir.

Sua solução em Java está muito bem estruturada. O uso da estrutura encadeada if / else if é a escolha perfeita para esse cenário, pois garante que o sistema pare de fazer testes assim que encontra a faixa correta do produto, economizando processamento. As variáveis foram declaradas com os tipos adequados, utilizando o double para o valor monetário e a String para o texto descritivo.

Como ponto de observação e refinamento da lógica, vale notar um pequeno detalhe na segunda condição: preco >= 50.01 && preco <= 200. Se o produto custasse exatamente 50.005, ele ficaria num "limbo" entre o primeiro if e o segundo. No desenvolvimento de softwares, para evitar essas frestas decimais, costumamos usar limites abertos. Como o primeiro bloco já elimina tudo que é menor ou igual a 50, o segundo bloco poderia testar apenas se o valor é menor ou igual a 200.

Veja como o encadeamento natural limpa as redundâncias:

if (preco <= 50) {
    categoriaDescricao = "Economico";
} else if (preco <= 200) {
    // Se o código chegou aqui, ele com certeza já é maior que 50
    categoriaDescricao = "Intermediario";
} else {
    // Se não é menor que 50 e nem menor ou igual a 200, só restou ser maior que 200
    categoriaDescricao = "Premium";
}

Essa construção em cascata simplifica a leitura do código e blinda o programa contra qualquer valor decimal intermediário.

Na sua visão, você acredita que deixar o último teste apenas como um bloco else direto deixa o encadeamento mais limpo em comparação com escrever a condição else if(preco >= 200) por extenso?

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