Ir para conteúdo
ph1

Problema em método para inserção de dados

Recommended Posts

Prazer a todos que responderem. Estou fazendo este codigo abaixo. Construtor e getters e setters montados corretamente. Porém tenho um método adicionarAluno e ele apresenta erro relacionado aos argumentos. Não entendi, verifiquei os argumentos passados e estão corretos. Não sei onde está o erro. Obrigado.

package pck;

import java.util.Scanner;
import pck.Disciplina;
import pck.Aluno;

public class main {

	public static void main(String[] args) {
		Disciplina disciplina = new Disciplina();
		 //Aluno aluno = new Aluno();
		//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 = new Scanner(System.in);
		
	System.out.println("Enter com a quantidade de alunos: ");
	int a = sc.nextInt(); 	
	Aluno[] aluno = new Aluno[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(aluno);
		}		
		//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;

public class Disciplina {
	private Aluno[] alunos;	
	private Disciplina[] disciplina = new Disciplina[10];
	private int posicao;	
		
	public Disciplina() {
		this.alunos = new Aluno[40];//construtor, quando cria a disciplina, cria automaticamente um vetor Aluno de 40 posições.
		 //Disciplina disciplina = new Disciplina();
	}
	
	public int 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 void adicionarAluno(Aluno aluno) {
		if(alunos != null){		        
			this.alunos[posicao] = aluno;
			posicao = posicao + 1;
				//return true;
			} else {
				System.out.println("Valor deve ser preenchido");
				//return false;//aluno não foi adicionado.
		}
	} */
	
	public boolean adicionarAluno(Aluno aluno) {		
			if(alunos != null){		        
				this.alunos[posicao] = aluno;
				posicao = posicao + 1;
					return true;
				} else {
					System.out.println("Valor deve ser preenchido");
					return false;//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 aluno
								return true;				
									} //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.
		}
		return false;//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.
	public void 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.
			
		}
	}

	

	
}
package pck;
import pck.Disciplina;

public class Aluno {
	private String nome, NomeDisciplina;
	private int idade, turma;
	
	int i = 0;
	
	 public Aluno(String nome, int idade, int turma, String NomeDisciplina) { 
		 setNome(nome);
		 //this.nome = nome;
	     this.idade = idade; 
	     this.turma = turma; 
	     this.NomeDisciplina = NomeDisciplina;
	     }	  
	
	
	public void setNome(String nome) {// atribui um valor para o atributo nome.
		if(nome == null || nome.isEmpty() || nome.isBlank()){
            System.out.println("Valor deve ser preenchido");
            return;
		}
		this.nome = nome;
	}
	
	public String getNome() {
		if(nome == null || nome.isEmpty() || nome.isBlank()){
            System.out.println("Valor do nome não foi preenchido");
            return "";
            }
		return nome;
	}

	public String getNomeDisciplina() {//Disciplina
		return NomeDisciplina;
	}

	public void setNomeDisciplina(String NomeDisciplina) {//set de disciplina
		this.NomeDisciplina = NomeDisciplina;
	}

	public void setIdade(int idade) {
		this.idade = idade;
	}

	public int getIdade() {
		return idade;
	}

	public void setTurma(int turma) {
		this.turma = turma;
	}

	public int getTurma() {
		return turma;
	}

	public String mostrarInformacoes() {
		return "Nome: " + getNome() + "\nIdade: " + getIdade() + "\nTurma: " + getTurma() + "\n" + "##############";
	}	

}

Obrigado a todos.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.