Atribuir valor a um array dentro de parâmetro

Olá!

Procurei bastante mas não achei resposta.

Tenho uma classe mãe chamada Pessoa, duas filhas Aluno e Professor, que serão chamados por Escola.

public class Pessoa {
	
	private int matricula;
	String nome;
	String endereco;
	String cpf;
	String [] disciplinas;
	
	public Pessoa (int matricula, String nome, String endereco, String cpf, String [] disciplinas) {
		setMatricula(matricula);
		this.nome = nome;
		this.endereco = endereco;
		this.cpf = cpf;
		this.disciplinas = this.disciplinas;
	}

	public void setMatricula (int matricula) {
		this.matricula = matricula;
	}
	
	public int getMatricula() {
		return this.matricula;
	}
	
	public String toString() {
		String relatorio =""+ getMatricula() + "\n" + this.nome +"\n" + this.endereco + "\n" + this.cpf + "\n" + this.disciplinas;
		return relatorio;
	}
	
}
public class Aluno extends Pessoa{

}
public class Professor extends Pessoa{

}
public class Escola {
	public static void main(String[] args) {

		Aluno aluninho1 = new Aluno (101212, "jadson", "R. Gravatá", "05512312", ???);
		
		System.out.println(aluno);
	}

}

Aqui, como faço para atribuir, por exemplo: {“matemática”, “inglês”, “…”} ?

Você pode usar da seguinte maneira:

disciplinas[disciplinas.lenght] = "Matemática";

Mas, seria mais interessante você utilizar Listas.

Ex.:

List<String> disciplinas = new ArrayList();

//...

disciplinas.add("Inglês");

Basta importar as API’s :

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

Espero ter ajudado.
:slight_smile:

JadsonAlmeida,

você pode dizer que seu parâmetro é array se ele for o último da assinatura do método e informar “…”.

Exemplo:

public Pessoa (int matricula, String nome, String endereco, String cpf, String ... disciplinas)

Sua classe Pessoa muda o construtor e o toString():


public class Pessoa {
	
	private int matricula;
	String nome;
	String endereco;
	String cpf;
	String [] disciplinas;
	
	public Pessoa (int matricula, String nome, String endereco, String cpf, String ... disciplinas) {
		setMatricula(matricula);
		this.nome = nome;
		this.endereco = endereco;
		this.cpf = cpf;
		this.disciplinas = disciplinas;
	}

	public void setMatricula (int matricula) {
		this.matricula = matricula;
	}
	
	public int getMatricula() {
		return this.matricula;
	}
	
	public String toString() {

		StringBuffer sb = new StringBuffer();

		if (disciplinas != null && disciplinas.length > 0) {
			for (int i = 0; i < disciplinas.length; i++) {
				sb.append(disciplinas[i]);
				if ((i+1) < disciplinas.length) {
					sb.append(", ");
				}
			}
		}

		String relatorio =""+ getMatricula() + "\n" + this.nome +"\n" + this.endereco + "\n" + this.cpf + "\n" + sb.toString();

		return relatorio;

	}
	
}

A classe Aluno tem que ter construtor assim:

public class Aluno extends Pessoa{

	public Aluno(int matricula, String nome, String endereco, String cpf, String ... disciplinas) {
		super(matricula, nome, endereco, cpf, disciplinas);
	}

}

O teste:

		Aluno aluno = new Aluno (101212, "jadson", "R. Gravatá", "05512312", "Matemática", "Física");
		
		System.out.println(aluno);

wiliamps

Obrigado, Williamps e marcoacsilva!

O exemplo do Williamps foi mais preciso. Bem interessante! Valeu!