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:
for(inti=0;i<alunos.length;i++){Alunoaluno=newAluno();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(intj=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:
Obviamente, vai precisar de um método para acessar as notas e atribuir valores (ex: um setNotas).
Abraço.
Luis_Paulo1
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.
staroski
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.
Luis_Paulo1
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=newAluno[5];for(inti=0;i<alunos.length;i++){Alunoaluno=newAluno();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(intj=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;}
TerraSkilll
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:publicvoidsetNota(intindice,doublenota){this.notas[indice]=nota;}// Loop na classe principal:for(intj=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:publicvoidsetNotas(double[]notas){this.notas=notas;}// loop na classe principalfor(inti=0;i<alunos.length;i++){Alunoaluno=newAluno();double[]notas_aux=newdouble[4];// array auxiliarSystem.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(intj=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 Alunoalunos[i]=aluno;}
Abraço.
Luis_Paulo1
Muito obrigado @TerraSkilll . Consegui entender. Utilizei a primeira opção e deu certo!