2
respostas

[Projeto] Resolução - Quarto Desafio

Fiz de uma forma diferente o quarto desafio proposto e gostaria de saber se está correto. Quando chamo o getNotas() mostra apenas a última nota, como posso fazer para retornar uma lista de todas elas?

Classe Aluno

public class Aluno {
    private String nome;
    private double notas;
    private int numeroNotas;
    private double somaNotas;

    public void setNome(String nome){
        this.nome = nome;
    }

    public void setNotas(double notas) {
        this.notas = notas;
        somaNotas = this.notas + somaNotas;
        numeroNotas++;
    }

    public String getNome(){
        return nome;
    }

    public double getNotas(){
        return notas;
    }

    public void media(){
        double media = somaNotas / numeroNotas;
        System.out.printf("A média do aluno é de: %.1f\n", media);
    }

}

Classe Main

import br.com.students.Aluno;

public class Main {
    public static void main(String[] args) {
        Aluno novoAluno = new Aluno();

        novoAluno.setNome("Manu");
        novoAluno.setNotas(7.6);
        novoAluno.setNotas(9.8);
        novoAluno.setNotas(3.5);

        System.out.println("O nome do aluno é: " + novoAluno.getNome());
        novoAluno.media();
    }
}
2 respostas

Oi!

Neste caso, sugiro transformar a variável "notas" em um array! E na função "media()" ficar para calcular a média e exibir as notas.

Aqui está uma sugestão com base no seu código:


public class Aluno {
    private String nome;
    private double[] notas;
    private int numeroNotas;
    private double somaNotas;

    public void setNome(String nome){
        this.nome = nome;
    }

    public void setNotas(double[] notas) {
        this.notas = notas;        
    }
    
    public double[] getNotas() {
        return notas;
    }

    public String getNome(){
        return nome;
    }    

    public void media(){
        double media;
        somaNotas = .0;
        numeroNotas = 0;
        
        System.out.println("\n NOTAS: ");
        for (double n : notas) {
            numeroNotas ++;
            somaNotas = n + somaNotas;
            System.out.println("N"+numeroNotas+": "+n);
        }
        
        media = somaNotas / numeroNotas;
        System.out.printf("A média do aluno "+this.nome+" é de: %.1f\n", media);
                
    }	
}



public class Main {

    public static void main(String[] args) {		 
        Aluno novoAluno = new Aluno();		
        novoAluno.setNome("Manu");        
        double[] N = {7.6, 9.8, 3.5};
        novoAluno.setNotas(N); 
        
        System.out.println("O nome do aluno é: " + novoAluno.getNome());
        novoAluno.media();
    }

}

Muito obrigada! Adicionei as mudanças e funcionou bem como eu esperava. Não achei muito corretor colocar mais código dentro de um setter e não sabia como adaptar, o for solucionou esse problema que eu estava tendo