Como declarar arraylist como parametro?

Ola pessoal estou com uma duvida meu professor da faculdade me passo este exercicio estou com dificuldade em fazer o iten b pois nao sei como faz para passar o ArrayList como parametro do construtor alguem pode me ajuda?

  1. Desenvolver um programa que receba as seguintes informações, até que seja digitado ?-1?.
    Entrada: RA do aluno, nome do aluno e nota do aluno;
    Saída: Média de Notas;
    Nome, RA e nota do aluno com a maior nota
    Nome, RA e nota do aluno com a menor nota
    OBS: a. Criar uma classe Nota e utilizar um vetor ou ArrayList de objetos Nota para armazenar cada registro de entrada;
    b. Criar uma classe Disciplina que receba como parâmetro no construtor o vetor ou ArrayList com as notas e o nome da disciplina, e um método resultado que imprima as informações de saída conforme definidas anteriormente.

[code]import javax.swing.*;
import java.util.ArrayList;

public class Notas{

  ArrayList<Notas> entrada = new ArrayList<Notas>();
  double nota = 0;
  String nome;
  int ra = 0;
  double maior = 0;
  double menor = 0;
    
     

  public ArrayList<Notas> getEntrada() {
     return entrada;
  }

  public void setEntrada(ArrayList<Notas> entrada) {
     this.entrada = entrada;
  }

  public double getNota() {
     return nota;
  }

  public void setNota(double nota) {
     nota = Double.parseDouble(JOptionPane.showInputDialog("Digite a Nota:"));
     this.nota = nota;
  }

  public String getNome() {
     return nome;
  }

  public void setNome(String nome) {
     nome = JOptionPane.showInputDialog("Digite o Nome:");
     this.nome = nome;
  }

  public int getRa() {
     return ra;
  }

  public void setRa(int ra) {
     ra = Integer.parseInt(JOptionPane.showInputDialog("Digite o Ra:"));
     this.ra = ra;
  }

  public double getMaior() {
     return maior;
  }

  public void setMaior(double maior) {
     this.maior = maior;
  }

  public double getMenor() {
     return menor;
  }

  public void setMenor(double menor) {
     this.menor = menor;
  }


  
  public void entradaDados(){
  
     Notas alunos = new Notas();
  
     while( ra!= -1){
     
        if(ra != -1){ 
        
           alunos.setRa(ra);
           alunos.setNome(nome);
           alunos.setNota(nota);
        
           entrada.add(alunos);
        
        }
        else{
           JOptionPane.showMessageDialog(null, "Programa encerrado");
           ra = -1;
        }
     }
  }

}[/code]



public class Disciplina {

private List<Nota> notas

public Disciplina(List<Nota> notas) {
this.notas = notas;
}

seria isso?

Não sei se intendi direito sua dúvida, mas para voces receber um array do tipo nota por parametro é simples,
segue abaixo um exemplo utilizando o nome do array que voce criou.

[code] public void teste(Notas entrada){
//Implementação…

}[/code]

ou sejá, no seu método voce recebera o array “entrada” do tipo “Notas”

Criar uma classe Disciplina que receba como parâmetro no construtor o vetor ou ArrayList com as notas e o nome da disciplina, e um método resultado que imprima as informações de saída conforme definidas anteriormente.

public class Disciplina {

    private List<Nota> nota;
    private String nome;

    public Disciplina(List list, String nome) {
        this.nota = list;
        this.nome = nome;
    }

    public void mostrarDados() {
        Iterator it = nota.iterator();
        while (it.hasNext()) {
            Nota nota = (Nota) it.next();
            System.out.println("Nome Disciplina : " + nome + "\nNotas : " + nota.getNota());
        }
    }
}

}

entendi muito obrigada , pode me tirar uma outra duvida? você viu meu codigo quando eu digito as notas ele me retorna somente a menor, poderia me ajuda? na maior ele me da a menor nota e na menor ele me da a menor nota.

Ola beatrizrodrigues3, não vi a fundo seu código mais mas creio que a melhor forma para pegar a maior e menor nota seria fazer uma função que ordene o ArrayList de notas, assim fica mais simples buscar o menor e maior valor.

Apenas complementando a resposta do marcelo.silva.java, sempre que criar um novo construtor não esqueça de criar o construtor padrão, uma vez que o mesmo foi sobrescrito.
Isso é uma boa pratica! :slight_smile:

Abs!

Poderia explicar melhor???

[] s,

O construtor padrão é um construtor sem parâmetros.

Quando você não especifica o construtor padrão para a sua classe o compilador define um durante a compilação para que a sua classe tenha um entry Point, para que você possa instanciar um objeto do tipo da sua classe.

public class ClasseQualquer{

    private String teste;

   //construtor padrão ou construtor default
   public ClasseQualquer(){ 

   }

   //construtor criado para inicializar algum tipo de informação
   public ClasseQualquer(String teste){ 

      this.teste= teste;

   }
   

}

A forma que foi exemplificado não esta errada, porem caso você precise apenas instanciar um objeto sem passar nenhum parâmetro o compilador vai chiar!
Quando criamos um construtor para inicializar informações estamos sobrescrevendo o construtor padrão/default. Para não sobrescreve-lo, basta criar um construtor sem parâmetros.

Em outras palavras, você pode definir vários construtores para a mesma classe mas sempre mantenha o construtor padrão.

Abs!

tópico

Em um tópico recente aqui no GUJ a galera esta discutindo sobre construtores.

www.guj.com.br/java/83090-construtor-e-metodo-ou-nao[url]

Este tópico é recente, a galera estava discutindo sobre construtores.

Abs!