Os códigos estão no arquivo em anexo. Obrigado. Os métodos estão corretos e os construtoes também, não encontro o motivo do erro.
package pck;import java.util.Scanner;import pck.Disciplina;publicclass main {publicstaticvoid main(String[] args){Disciplina disciplina =newDisciplina();//Aluno a1 = new Aluno("Ricardo", 31, 1);//Aluno a1 = null;//Aluno a2 = new Aluno("Ana Elisa", 17, 1);//Aluno a3 = new Aluno("Geovana", 18, 2);//Aluno a4 = new Aluno("Livia", 20, 2);Scanner sc =newScanner(System.in);System.out.println("Enter com a quantidade de alunos: ");int a = sc.nextInt();Aluno[] aluno =newAluno[a];for(a =0;a < aluno.length;a++){System.out.println("Entre com o nome, a idade e a disciplina: ");String nome = sc.nextLine();int idade = sc.nextInt();int turma = sc.nextInt();String nomeDisciplina = sc.nextLine();
disciplina.adicionarAluno(nome,idade,turma, nomeDisciplina);}//disciplina.adicionarAluno(a2);//disciplina.adicionarAluno(a3);//disciplina.adicionarAluno(a4);System.out.println("Quantidade de alunos: "+ disciplina.getNumAlunos());
disciplina.exibirInformacoes();System.out.println("Antes de remover alunos. ");//removendo aluno//disciplina.removerAluno(a2); System.out.println("Despois de remover alunos. ");
disciplina.exibirInformacoes();System.out.println("Quantidade de alunos: "+ disciplina.getNumAlunos()+"\n");System.exit(0);}}
package pck;publicclassDisciplina{privateAluno[] alunos =newAluno[40];privateDisciplina[] disciplina =newDisciplina[10];privateint posicao;publicDisciplina(){this.alunos =newAluno[40];//construtor, quando cria a disciplina, cria automaticamente um vetor Aluno de 40 posições.//Disciplina disciplina = new Disciplina();}publicint getNumAlunos(){int cont =0;for(int i =0; i < alunos.length; i++){if(alunos[i]!= null){//se a posição é diferente de null não conta.
cont++;}}return cont;//retorna o número de alunos.}public boolean adicionarAluno(Aluno alunos){if(alunos != null){this.alunos[posicao]= alunos;
posicao = posicao +1;returntrue;}else{returnfalse;//aluno não foi adicionado.}}public boolean removerAluno(Aluno aluno){//verifica sem existe nome, idade, e turma, as três tem de ser verificadas, pois podem haver repetições.for(int i =0; i < alunos.length; i++){//para remover o aluno do vetor. Excluindo pelo nome, idade e turma.if((alunos[i].getNome()== aluno.getNome())&&(alunos[i].getIdade()== aluno.getIdade())&&(alunos[i].getTurma()== aluno.getTurma())&&(alunos[i].getnomeDisciplina()== aluno.getnomeDisciplina())){
alunos[i]= null;//remove um alunoreturntrue;}//aqui não podemos, após esta chave, por causa da posição do vetor, por exemplo, aluno na posição 3.//por causa da iteração, o for não estará na posição 0. Pode estar em outra posição. Ele pode não estar na posição 0 e retorna false,//queremos que percorra todo o vetor e não encontrar a condição do if acima.}returnfalse;//caso não encontre na primeira posição, pode estar em outra posição de 0 a 4. Tem de percorrer todo o vetor e não cair dentro do if.//por isso não tem o else e o return está fora da condição. False é porque não está no vetor.}//exibir as informações de todos os alunos.publicvoid exibirInformacoes(){for(int i =0; i < alunos.length;i++){if(alunos[i]!= null)//if para evitar exceção se a posição for null pela informação removida, pois a posição não tem mais dados, está vazia.System.out.println(alunos[i].mostrarInformacoes());//chama o método já pronto mostrarInformações que está na classe Aluno. Mostra somente posições com valores.}}}
Pergunta
phk1
Os códigos estão no arquivo em anexo. Obrigado. Os métodos estão corretos e os construtoes também, não encontro o motivo do erro.
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.