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] Resolução exercício registro de notas

package classes;

import java.util.ArrayList;

public class Materia {
    private String materia;
    private int qtdNotas = 0;
    private ArrayList<Double> notasAlunos;

    public Materia(String materia) {
        this.materia = materia;
        this.notasAlunos = new ArrayList<>();
    }

    public void adicionarNotas(double nota) {
        if (nota <= 10 && nota >= 0) {
            notasAlunos.add(nota);
            this.qtdNotas++;
        } else {
            System.out.printf("Nova inválida ignorada: %.2f%n", nota);
        }
    }

    public void mostraResultado() {
        if(notasAlunos.isEmpty()) {
            System.out.println("Nenhuma nota cadastrada");
            return;
        }
        System.out.printf("Total de notas válidas: %d%n", qtdNotas);
        System.out.printf("Média em %s: %.2f%n", this.materia, calculaMedia());
    }

    public double calculaMedia() {
        double notaFinal = 0;
        for(double nota : notasAlunos) {
            notaFinal += nota;
        }
        return notaFinal / notasAlunos.size();
    }
}

import classes.Materia;

public class MainExerciciosDisciplina {
    public static void main(String[] args) {
        Materia matematica = new Materia("Matemática");

        matematica.adicionarNotas(7.5);
        matematica.adicionarNotas(11);
        matematica.adicionarNotas(8.0);
        matematica.adicionarNotas(-3);
        matematica.adicionarNotas(9.5);
        matematica.mostraResultado();
    }
}
1 resposta

Oii Cauan, tudo bem?

Obrigada por compartilhar sua solução aqui no fórum! A implementação ficou bem organizada. Gostei especialmente de dois pontos: a validação da nota dentro de adicionarNotas com o feedback para nota inválida, e a verificação de lista vazia no mostraResultado antes de tentar calcular qualquer coisa, evitando uma divisão por zero.

Uma observação pequena: o campo qtdNotas faz o mesmo trabalho que notasAlunos.size(). Como você já usa a lista para calcular a média, vale considerar substituir qtdNotas por notasAlunos.size() diretamente, deixando o código mais simples e eliminando a necessidade de manter os dois sincronizados.

Conte com a Alura para evoluir seus estudos. Em caso de dúvidas, fico à disposição.

Bons estudos!

Sucesso

Imagem da comunidade