0
respostas

[Projeto] Resolução do desafio "Registro de notas"

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

public class Disciplina {
    private String nome;
    List<Double> notas;
    private double somaDasNotas;
    private int notasValidas;

    public Disciplina(String nome) {
        this.nome = nome;
        this.notas = new ArrayList<>();
        this.somaDasNotas = 0;
        this.notasValidas = 0;
    }

    public void adicionarNota(double nota) {
        notas.add(nota);
        System.out.println("Nota adicionada à lista de notas da disciplina.");
    }

    public double calcularMedia() {
        if (notas.isEmpty()) {
            return 0;
        } else {
            for (double nota : notas) {
                if (nota < 0 || nota > 10) {
                    continue;
                }
                this.somaDasNotas += nota;
                this.notasValidas++;
            }

            return this.somaDasNotas / this.notasValidas;
        }
    }

    public void exibirInformacoes() {
        for (double nota : notas) {
            if (nota < 0 || nota > 10) {
                System.out.println("Nota inválida ignorada: " + nota);
            }
        }

        System.out.printf("""
                Total de notas válidas: %d
                Média em %s: %.2f
                """, this.notasValidas, this.nome, calcularMedia());
    }
}
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        System.out.println("Digite o nome da disciplina: ");
        Disciplina disciplina = new Disciplina(scanner.nextLine());

        do {
            System.out.println("Deseja adicionar uma nota à lista de notas da disciplina (\"sim\"/\"não\")? ");
            String entrada = scanner.nextLine();

            if (entrada.equalsIgnoreCase("sim")) {
                System.out.println("Digite a nota a ser adicionada: ");
                disciplina.adicionarNota(scanner.nextDouble());
                scanner.nextLine();
            } else if (entrada.equalsIgnoreCase("não")) {
                disciplina.calcularMedia();
                break;
            }
        } while (true);

        System.out.println("Informações da disciplina: ");
        disciplina.exibirInformacoes();
    }
}