Bom dia,
alguém poderia me ajudar com o código abaixo? Estou com muita dificuldade.
Código: http://prntscr.com/dlqhve
Estou tentando passar o “grades” para a classe “Student” como argumento do método.
Obrigado.
Bom dia,
alguém poderia me ajudar com o código abaixo? Estou com muita dificuldade.
Código: http://prntscr.com/dlqhve
Estou tentando passar o “grades” para a classe “Student” como argumento do método.
Obrigado.
você declarou um vetor myStudents [], mas está tentando usar um método da classe Student
o vetor não possui os metodos dos objetos nele contidos
Mas se o vetor myStudents[] é do tipo Student, ele não pode usar os métodos dessa classe?
não diretamente como você está fazendo, myStudents.setGradeStudent(grades);
a variável myStudents é um vetor.
você tem um vertor myStudents [] correto?
para setar alguma coisa em qualquer objeto Student que esteja dentro desse vetor você tem que indicar em que posição do vetor este Student se encontra assim, myStudents[2].setGradeStudent(grades); assim vai setar a grade para o estudante que está na posição 2 do vetor.
Brigadão, vou tentar aqui!
Na verdade myStudents é do tipo Student[] e não Student, são tipos diferentes.
Uma coisa que vi no seu código foi que vc cometeu o mesmo erro da sua outra dúvida com os contatos. Vc criou um array com capacidade para 5 Student, mas não criou os Student de fato. Pense assim: você reservou espaço para 5 Student, mas não preencheu estes espaços, sabe?
Student[] myStudents = new Student[5]; // aqui vc está criando um array de Student
myStudents[0] = new Student(); // aqui vc está criando um Student e o colocando na primeira posição do seu array
myStudents[1] = new Student(); // aqui mais um Student está sendo criado e por aí vai.
Apenas por uma questão de convençaõ, quando for declarar arrays em Java, prefira fazer assim:
Student[] myStudents; // com os colchetes depois do tipo e antes do nome da variável
Ao invés de assim:
Student myStudents[];
Com certeza deve haver uma explicação lógica para está convenção, mas agora não sei dizer, de qualquer forma eu vi isso aqui: The Java™ Tutorials | Arrays.
You can also place the brackets after the array’s name:
// this form is discouraged float anArrayOfFloats[];However, convention discourages this form; the brackets identify the array type and should appear with the type designation.
Agora foi, era isso que estava faltando mesmo. Então se eu criar um array para armazenar 10 objetos, eu teria que criar 10 objetor do mesmo tipo para serem armazenados certo?
Na verdade, estou tentando fazer o exercício deste canal aqui : https://www.youtube.com/watch?v=ML32UfX43Pw&list=PLGxZ4Rq3BOBq0KXHsp5J3PxyFaBIXVs3r&index=74
Só que estou a dois dia e nada, estou empacado no minuto 11:20, pois foi criado o array de objetos, mas não foi populado e está funcionando.
Poderia dar uma olhada? Estou quase desistindo 
Obrigado.
Exatamente, se você criar um array com 1000, você teria que dar um jeito de criar 1000 objetos pra popular este array.
Assisti ao video e realmente é como vc disse, a Loiane criou o array de Aluno, mas não o populou. Contudo, se vc assistir apartir de 23:00 verá que ela começa a testar o programa e ao final do teste ela identifica um erro que é justamente o fato de que ela não populou o tal array.
Veja apartir de 23:48 no código dela. Na linha 64 ela cria um Aluno e na linha 69 ela coloca este Aluno no array alunos. Basicamente, depois da correção, fica assim:
Aluno[] alunos = new Aluno[5];
for (int i = 0; i < 5; i++) {
/* Um monte de código aqui */
Aluno aluno = new Aluno();
aluno.setNome(nomeAluno);
aluno.setmatricula(matAluno);
aluno.setNotas(notas);
alunos[i] = aluno;
}
Só um ponto interessante é que vc poderia muito bem fazer assim também:
Aluno[] alunos = new Aluno[5];
for (int i = 0; i < 5; i++) {
/* Um monte de código aqui */
alunos[i] = new Aluno();
alunos[i].setNome(nomeAluno);
alunos[i].setmatricula(matAluno);
alunos[i].setNotas(notas);
}
Uma dica: sempre que estiver seguindo um tutorial, não seja ancioso e afobado, veja o tutorial até o final antes de ficar quebrando a cabeça.
Poxa vida cara, verdade. Eu não tinha visto até o final ainda pois eu gosto de fazer sozinho e depois ver a resposta. Quebrei muito a cabeça mesmo.
Só tem uma última parte agora aqui que deu o seguinte:
código: http://prnt.sc/dlx36q
Ao invés de aparecer os valores das variáveis grades, apareceu o endereço de memória. Dá uma olhada.
Eu pesquisei aqui, mas as recomendações não deram certo.
Você errou em duas partes.
Primeiro: No método showInformation(), dentro do segundo for você colocou:
System.out.print( this.students[ j ].getGradeStudent() + " " );
Tenho quase certeza que o que vc quis dizer foi:
System.out.print( this.students[ i /* <<< */ ].getGradeStudent() + " " );
E esta observação nos leva ao seu segundo erro: O método getGradeStudent() retorna um array de double, logo, do jeito que fez, ele só ta imprimindo aqueles números estranhos. Para corrigir é simples:
System.out.print( this.students[ i /* aqui é i */ ].getGradeStudent()[ j /* aqui sim é o j, tendeu? */ ] + " " );
Mas seu código ficaria ruim, então sugiro a seguinte melhoria com o enhanced for:
public void showInformation() {
/* your code here */
for (Student s: students) {
System.out.println( s.getNameStudent() );
System.out.println( s.getRegistrationId() );
for (double nota: s.getGradeStudent()) {
System.out.print( nota + " " );
}
System.out.println();
}
}
Fantástico, agora deu tudo certo. Eu não sei como agradecer cara.
Deu tudo certo e entendi muito bem.
Obrigado mesmo!