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

Resolução

package com.github.lucasdevrj.registrodenotas;

import java.util.ArrayList;
import java.util.List;

public class Disciplina {

    private String nome;
    private List<Double> notas = new ArrayList<>();
    private int quantidadeDeNotasValidas;
    private int quantidadeDeNotasInvalidas;
    private double mediaDasNotas;

    public Disciplina(String nome) {
        this.nome = nome;
        quantidadeDeNotasInvalidas = 0;
        quantidadeDeNotasValidas = 0;
    }

    private double getSomaTotalDasNotas() {
        double somaTotalDasNotas = 0.0;
        for (int i = 0; i < notas.size(); i++) {
            somaTotalDasNotas += notas.get(i);
        }
        return somaTotalDasNotas;
    }

    private double getMediaDasNotas() {
        mediaDasNotas = getSomaTotalDasNotas() / notas.size();
        return mediaDasNotas;
    }

    public void adicionaNota(double nota) {
        if (nota >= 0.0 && nota <= 10.0) {
            notas.add(nota);
            quantidadeDeNotasValidas++;
            System.out.println("Nota adicionada com sucesso.");
        } else {
            quantidadeDeNotasInvalidas++;
            System.out.println("Nota inválida!\nDigite uma nota entre 0 a 10.");
        }
    }

    public void exibeQuantidadesDeNotasValidasEInvalidas() {
        System.out.println("Total de notas válidas: " + quantidadeDeNotasValidas);
        System.out.println("Total de notas inválidas: " + quantidadeDeNotasInvalidas);
    }

    public void exibeMediaDasNotas() {
        System.out.println("Soma total das notas: " + getSomaTotalDasNotas());
        System.out.printf("Média em %s: %.2f\n", nome, getMediaDasNotas());
    }
}
/**
 * Você está desenvolvendo um módulo acadêmico para registrar o desempenho dos alunos em cada
 * disciplina. O sistema precisa ser flexível para receber diferentes quantidades de notas,
 * mas deve garantir que todas estejam dentro do intervalo válido.
 *
 * Crie um programa que:
 *
 * Defina uma classe que armazene o nome da disciplina e a lista das notas dos alunos
 * Valide se cada nota está entre 0 e 10
 * Calcule a média apenas das notas válidas
 * Informe quantas notas foram registradas com sucesso e quantas foram ignoradas
 * Exemplo de entrada:
 *
 *
 * Disciplina matematica = new Disciplina("Matemática");
 * matematica.adicionarNota(7.5);
 * matematica.adicionarNota(11.0);
 * matematica.adicionarNota(8.0);
 * matematica.adicionarNota(-3.0);
 * matematica.adicionarNota(9.5);
 *
 * Saída esperada:
 *
 * Nota inválida ignorada: 11.0
 * Nota inválida ignorada: -3.0
 * Total de notas válidas: 3
 * Média em Matemática: 8,33
 */
package com.github.lucasdevrj.registrodenotas;

public class Principal {
    public static void main(String[] args) {
        Disciplina disciplina = new Disciplina("Lógica de Programação");

        int quantidadeDeAlunos = 30;
        for (int i = 0; i < quantidadeDeAlunos; i++) {
            double notaValida = (int) (Math.random() * 10.0);
            double notaInvalida = (int) (Math.random() * 10.00) * -1;
            double notaValidaOuInvalida = i % 2 == 0 ? notaValida : notaInvalida;
            disciplina.adicionaNota(notaValidaOuInvalida);
        }
        System.out.println("------------------------");
        disciplina.exibeQuantidadesDeNotasValidasEInvalidas();
        disciplina.exibeMediaDasNotas();
    }
}

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

1 resposta

Olá, Lucas! Como vai?

Parabéns pela resolução da atividade!

Vi que você explorou o ArrayList para armazenar notas com Java, utilizou muito bem o método adicionaNota() para validar entradas e ainda compreendeu a importância da média para avaliar o desempenho acadêmico.

Continue postando as suas soluções, com certeza isso ajudará outros estudantes e tem grande relevância para o fórum.

Se quiser aprofundar ainda mais, algumas boas práticas são:

  • Coleções: usar listas para lidar com quantidades variáveis de dados.
  • Validação: garantir que valores estejam sempre dentro de limites definidos.
  • Formatação de saída: melhorar a legibilidade ao exibir resultados.

Ah, uma pergunta: Você acha mais interessante que o sistema registre todas as notas, mesmo inválidas, para fins de auditoria ou que descarte imediatamente valores fora do intervalo permitido?

Fico à disposição! E se precisar, conte sempre com o apoio do fórum.

Abraço e bons estudos!

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