Solucionado (ver solução)

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!

Solucionado
(ver solução)
1
resposta

Minha resposta

package com.github.lucasdevrj.controledoniveldebateria;

public class Controle {

    private int nivelDeBateria;
    private Status status;

    public int getNivelDeBateria() {
        return nivelDeBateria;
    }

    public String getStatus() {
        return status.getValor();
    }

    public void setNivelDeBateria(int nivelDeBateria) {
        if (nivelDeBateria >= 0.0 && nivelDeBateria <= 100) {
            if (nivelDeBateria <= 20) {
                status = Status.BATERIA_FRACA;
            } else if (nivelDeBateria <= 79) {
                status = Status.BATERIA_OK;
            } else {
                status = Status.BATERIA_CHEIA;
            }
            this.nivelDeBateria = nivelDeBateria;
        } else {
            System.out.println("Digite um nível de bateria de 0 a 100.");
        }
    }

    @Override
    public String toString() {
        return "%d%% - %s".formatted(getNivelDeBateria(), getStatus());
    }
}
package com.github.lucasdevrj.controledoniveldebateria;

public enum Status {
    BATERIA_FRACA("Bateria Fraca"),
    BATERIA_OK("Bateria Ok"),
    BATERIA_CHEIA("Bateria Cheia");

    private final String valor;

    Status(String valor) {
        this.valor = valor;
    }

    public String getValor() {
        return valor;
    }
}
/**
 * Imagine que você está desenvolvendo um sistema para dispositivos portáteis, onde precisa monitorar o nível de
 * energia da bateria. O dispositivo deve informar ao usuário o status atual da bateria, garantindo que os valores
 * sempre estejam dentro de um intervalo válido.
 *
 * Crie um programa que:
 *
 * Defina uma classe que armazene o nível da bateria.
 * Permita definir o nível apenas se estiver entre 0 e 100.
 * Forneça uma forma de exibir o status da bateria com base no nível atual:
 * Até 20%: “Bateria fraca”
 * Entre 21% e 79% : “Bateria ok”
 * Igual ou acima de 80%: “Bateria cheia”
 * Instancie essa classe, defina um nível e exiba o status.
 * Exemplo de entrada:
 *
 * Bateria b = new Bateria();
 * b.setNivel(85);
 *
 * Saída esperada:
 *
 * Status: Bateria cheia
 */

package com.github.lucasdevrj.controledoniveldebateria;

public class Principal {
    public static void main(String[] args) {
        Controle controle1 = new Controle();
        Controle controle2 = new Controle();
        Controle controle3 = new Controle();
        Controle controle4 = new Controle();
        Controle controle5 = new Controle();

        controle1.setNivelDeBateria(12);
        controle2.setNivelDeBateria(45);
        controle3.setNivelDeBateria(82);
        controle4.setNivelDeBateria(100);
        controle5.setNivelDeBateria(0);

        System.out.println(controle1);
        System.out.println(controle2);
        System.out.println(controle3);
        System.out.println(controle4);
        System.out.println(controle5);
    }
}

Insira aqui a descrição dessa imagem para ajudar na acessibilidade
Beleza?

1 resposta
solução!

Olá, Lucas, como vai?

Sua implementação do controle de nível de bateria está bem organizada e demonstra um bom uso de encapsulamento junto com enum para representar os estados possíveis da bateria. O método setNivelDeBateria também faz uma validação adequada do intervalo entre 0 e 100, além de já atualizar o status de forma coerente conforme as faixas definidas no enunciado.

Um ponto que merece atenção está na comparação dentro do setter, onde o parâmetro é do tipo int, mas há uma verificação usando 0.0, que é um valor decimal. Apesar de funcionar por coerção implícita, o mais consistente seria manter o mesmo tipo em toda a comparação para evitar ambiguidades em contextos mais complexos.

O fórum está à disposição para acompanhar sua evolução e apoiar nos próximos desafios.

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