Pessoal, sou iniciante em java. Queria saber como posso iniciar a variável double[][] notas em outra classe. Lembrando que essa classe Aluno está com os métodos get e set. A classe Aluno eu declarei na classe principal como sendo um array também com 5 alunos, cada aluno terá 4 notas. Mas não sei como declarar o array de notas na classe principal pra inserir as notas para cada Aluno. Segue uma parte do código das duas classes:
CLASSE 1
public class Aluno {
private String nome;
private String matricula;
private double[][] notas;
… continua a classe com metódos get e set de cada atributo
}
CLASSE 2
public class Main {
public static void main(String[] args) {
Aluno[] alunos = new Aluno[5];
for (int i = 0; i < alunos.length; i++) {
Aluno aluno = new Aluno();
System.out.println("Digite o nome do aluno");
aluno.setNome(scan.next());
System.out.println("Digite a matrícula do aluno");
aluno.setMatricula(scan.next());
for (int j = 0; j < aluno.getNotas()[i].length; j++) {
System.out.println("Digite a nota"+ j+1 +"do aluno");
}
alunos[i] = aluno;
}
}
Supondo que o aluno precisa apenas 4 notas, você precisa de um array de apenas uma dimensão (double[] ) em vez de um array de duas dimensões como você está sugerindo (double[][]).
Você pode criar o array diretamente na inicialização, seja na declaração do atributo:
public class Aluno {
private String nome;
private String matricula;
private double[] notas = new double[4];
}
Ou no constutor:
public class Aluno {
private String nome;
private String matricula;
private double[] notas;
public Aluno(){
notas = new double[4];
}
}
Obviamente, vai precisar de um método para acessar as notas e atribuir valores (ex: um setNotas).
Abraço.
Obrigado pela ajuda. O que acontece é que a Classe Aluno será um array também que eu declarei na classe principal, pois serão 5 alunos nesse exercício. Daí eu coloquei notas como um array de duas dimensões porque cada aluno terá 4 notas.
Aí lá na classe principal eu fiz um for, que vai criar cada aluno, e dentro dele fiz outro for pra setar as 4 notas de cada Aluno. Mas eu não sei como eu posso iniciar o array de notas e chamar o método setNotas nesse for que está em outra classe, que no caso é classe principal.
Se cada aluno terá 4 notas, então o array será unidimensional.
Cada objeto do tipo Aluno terá seu array de 4 posições.
Exatamente como o @TerraSkilll exemplificou.
Ah blz, agora entendi @staroski . Eu fiz como o @TerraSkilll falou, declarei na classe Aluno private double[] notas = new double[4]; e o método get e set tá feito lá também. Só ainda não to sabendo como usar o método set na classe Main. Tá assim nesse momento:
Aluno[] alunos = new Aluno[5];
for (int i = 0; i < alunos.length; i++) {
Aluno aluno = new Aluno();
System.out.println("Digite o nome do aluno");
aluno.setNome(scan.next());
System.out.println("Digite a matrícula do aluno");
aluno.setMatricula(scan.next());
for (int j = 0; j < aluno.getNotas().length; j++) {
System.out.println("Digite a nota"+ j+1 +"do aluno");
aluno.setNotas(scan.nextDouble(j)); //aqui tá sublinhado vermelho mostrando erro.
}
alunos[i] = aluno;
}
Você pode criar um método setNota que recebe o índice da nota a ser atribuída e o valor. Algo como:
// setNota na classe Aluno:
public void setNota(int indice, double nota){
this.notas[indice] = nota;
}
// Loop na classe principal:
for (int j = 0; j < aluno.getNotas().length; j++) {
System.out.println("Digite a nota"+ j+1 +"do aluno");
aluno.setNota(j, scan.nextDouble());
}
Ou pode ter um array auxiliar na sua classe principal, que é passado inteiro para um setNotas:
// setNotas na classe Aluno:
public void setNotas(double[] notas){
this.notas = notas;
}
// loop na classe principal
for (int i = 0; i < alunos.length; i++) {
Aluno aluno = new Aluno();
double[] notas_aux = new double[4];// array auxiliar
System.out.println("Digite o nome do aluno");
aluno.setNome(scan.next());
System.out.println("Digite a matrícula do aluno");
aluno.setMatricula(scan.next());
for (int j = 0; j < aluno.getNotas().length; j++) {
System.out.println("Digite a nota"+ j+1 +"do aluno");
notas_aux[j] = scan.nextDouble(); // lê para o array auxiliar
}
aluno.setNotas(notas_aux); // passa o array auxiliar pro Aluno
alunos[i] = aluno;
}
Abraço.
Muito obrigado @TerraSkilll . Consegui entender. Utilizei a primeira opção e deu certo!