Oii, Letícia!
Você está imparável hoje, hein? Muito bom ver essa dedicação!
Seu código funciona para a maioria dos casos, mas quero te convidar a ser uma "detetive" comigo para analisarmos um cenário bem específico que poderia gerar um erro no seu sistema de loja.
O "Caso Misterioso" do 50.01
Imagine que o produto custe exatamente R$ 50,01. Vamos testar na sua lógica:
if (preco <= 50.0): Falso (50.01 é maior).else if (preco > 50.01 ...): Falso (50.01 não é maior que 50.01, é igual!).else: Verdadeiro -> O sistema imprimiria "Premium".
Ou seja, um produto de R$ 50,01 sairia como Premium por causa desse pequeno intervalo na lógica.
A Simplificação Mágica
A beleza do else if é que ele só é testado se o if anterior falhou.
- Se o código chegou no segundo
if, nós já temos certeza que o número é maior que 50. Não precisamos testar isso de novo!
Podemos simplificar assim:
public class Valores { // Lembra da classe com Maiúscula? ;)
public static void main(String[] args) {
double preco = 50.01; // Teste com esse valor
if (preco <= 50.0) {
System.out.println("Econômico");
} else if (preco <= 200.0) {
// Se chegou aqui, JÁ SABEMOS que é maior que 50.
// Só precisamos checar se é menor que 200.
System.out.println("Intermediário");
} else {
System.out.println("Premium");
}
}
}
Viu como ficou mais limpo?
- Arrumei o nome da classe para
Valores (padrão Java). - Separei as linhas para facilitar a leitura.
- Tirei a parte redundante do
if (preco > 50.01), o que resolveu o bug do 50.01 e deixou o código mais leve.
Tente fazer essas alterações e teste com o valor 50.01 para ver a mágica acontecer!
Bons estudos!
Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!