Luthien 0 Denunciar post Postado Outubro 20, 2014 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
_Isis_ 202 Denunciar post Postado Outubro 20, 2014 Cole o enunciado e a classe Aluno. Às vezes é uma interpretação errada. Compartilhar este post Link para o post Compartilhar em outros sites
Luthien 0 Denunciar post Postado Outubro 21, 2014 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
_Isis_ 202 Denunciar post Postado Outubro 21, 2014 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. https://www.securecoding.cert.org/confluence/display/java/ERR08-J.+Do+not+catch+NullPointerException+or+any+of+its+ancestors Compartilhar este post Link para o post Compartilhar em outros sites