Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Luthien

if, composição

Recommended Posts

Fiz a classe aluno, professor, disciplina e o main. Ta funcionando, o problema é q o aluno 1 só pode ter 1 disciplina e o aluno 2 pode ter as 2, no enunciado da questão pedia pra criar duas variáveis de instancia para a classe aluno e foi isso q fiz, o problema está no if do main. Não consigo imprimir 1 disciplina só para o aluno 1. Ta aí o código:

public class ControleAcademico {
	static Scanner in = new Scanner(System.in);
	public static void main(String args[]){
		Aluno aluno[];
		aluno = new Aluno[2];	
		
		for(int i = 0 ; i < 2; i++){
			aluno[i] = new Aluno();
			System.out.println("Informe o nome do aluno "+(i+1));
			aluno[i].setNome(in.nextLine());
			
			System.out.println("Informe o curso do aluno"+(i+1));
			aluno[i].setCurso(in.nextLine());
		
			System.out.println("Informe a disciplina que o aluno "+(i+1)+" cursa");
				if(i == 0)
					aluno[0].setDis1(cadastraDisciplina()[i]);
				else if(i == 1)
					aluno[i].setDis1(cadastraDisciplina()[i]);
					aluno[i].setDis2(cadastraDisciplina()[i]);
			}
		for(int k = 0; k < 2; k++){
			System.out.println(aluno[k].toString());
		}
	}
	
	public static Disciplina[] cadastraDisciplina(){
		Disciplina d[];
		d = new Disciplina[2];
		
		for(int  i = 0; i < 2 ; i++){
			d[i] = new Disciplina();
			System.out.println("Informe o nome da disciplina "+(i+1));
			d[i].setNome(in.nextLine());
			
			System.out.println("Informe a qual curso a disciplina "+(i+1)+" pertence");
			d[i].setCurso(in.nextLine());
			
			System.out.println("Informe o código da disciplina "+(i+1));
			d[i].setCodigo(in.nextInt());
			in.nextLine();
			
			System.out.println("Informe o professor responsável pela disciplina "+(i+1));
			d[i].setProfessor(cadastraProfessor());
		}
		return d;
	}
	
	
	public static Professor cadastraProfessor(){
		Professor p = new Professor();
			System.out.println("Informe o nome do professor");
			p.setNome(in.nextLine());
			
			System.out.println("Informe o CPF do professor");
			p.setCpf(in.nextLine());
			
			System.out.println("Informe a área do professor");
			p.setAera(in.nextLine());
			
			System.out.println("Informe o nível de carreira do professor");
			p.setNivelCarreira(in.nextInt());
			in.nextLine();
			
			return p;
		}
	}

Compartilhar este post


Link para o post
Compartilhar em outros sites

enunciado:

Crie uma classe Aluno que deverá ter os seguintes dados: nome – String,
curso – String. Além disso, cada aluno poderá cursar até duas disciplinas,
portanto deverá ter duas disciplinas como variáveis de instância.
δ) Crie uma classe ControleAcademico que permitirá ao usuário cadastrar 2
alunos. Todos os dados do aluno deverão ser cadastrados (Nome, curso,
dados das disciplinas, o que inclui os dados do professor). Ao final do cadastro
todos os dados cadastrados deverão ser exibidos na tela de maneira
organizada. O primeiro aluno cadastrado deverá cursar apenas uma disciplina
e o segundo aluno deverá cursar duas disciplinas.
Pergunta: Se um aluno está cursando apenas uma disciplina ocorrerá
NullPointerException na hora da exibição dos dados já que se tentará acessar
os dados de uma disciplina que não foi cadastrada. Como fazer para resolver
isso?
public class Aluno {
	private String nome, curso;
	private Disciplina dis1, dis2;
	
	public Aluno(String nome, String curso, Disciplina dis1, Disciplina dis2) {
		setNome(nome);
		setCurso(curso);
		setDis1(dis1);
		setDis2(dis2);
	}
	
	public Aluno(){
		
	}
	
	public String toString(){
		return "Nome: "+getNome()+"\nCurso: "+getCurso()+"\nDisciplina 1: "+getDis1()+"\nDisciplina 2: "+getDis2();
	}

	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public String getCurso() {
		return curso;
	}

	public void setCurso(String curso) {
		this.curso = curso;
	}

	public Disciplina getDis1() {
		return dis1;
	}

	public void setDis1(Disciplina dis1) {
		this.dis1 = dis1;
	}

	public Disciplina getDis2() {
		return dis2;
	}

	public void setDis2(Disciplina dis2) {
		this.dis2 = dis2;
	}	
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pelo que me lembro, a variável Disciplina declarada dentro do método cadastraDisciplina é de escopo local, deixando de existir quando vc retorna do método. Ela é inacessível ao main. A lista de disciplinas e professores teria que ser declarada dentro da classe ControleAcademico, a princípio, se vc quiser utilizar a lista de disciplinas dentro do main.

 

 

 

Pergunta: Se um aluno está cursando apenas uma disciplina ocorrerá NullPointerException na hora da exibição dos dados já que se tentará acessar os dados de uma disciplina que não foi cadastrada. Como fazer para resolver isso?
Verifique com um if se a variável dis2 é null. Nunca acesse diretamente variáveis que possam conter referência nula e muito menos capture um NullPointerException.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

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