Tenho três classes como Principal com método main , professor e disciplina.
classProfessor{privateintcodigo;privateStringtitulacao;privateStringnome;privateinttempo;}classdisciplina{privateintcodigoDisciplina;privateinttempoCargaHorariaDisciplina;privateStringnomeDisciplina;privateProfessorprofessor;}Principal{Professorprof[]=newProfessor[3];Disciplinadis[]=newDisciplina[3];intcontarProf=0;intcontarDisc=0;prof[contarProf]=newProfessor();dis[contarDisc]=newDisciplina();}Precisoimprimironomedoprofessorapartirdadisciplinaqueleciona.Peloquefizestáaimprimirnull.for(i=0;i<=contarProf;i++){if(nomeDis.equalsIgnoreCase(dis[i].getNomeDisciplina())){JOptionPane.showMessageDialog(null,"O nome do professor é :"+prof[i].getNome());break;}}
Só tornei seu código executavel , veja se intende por conta as modificações:
importjavax.swing.JOptionPane;classProfessor{privateintcodigo;privateStringtitulacao;privateStringnome;privateinttempo;publicintgetCodigo(){returncodigo;}publicProfessorsetCodigo(intcodigo){this.codigo=codigo;returnthis;}publicStringgetTitulacao(){returntitulacao;}publicProfessorsetTitulacao(Stringtitulacao){this.titulacao=titulacao;returnthis;}publicStringgetNome(){returnnome;}publicProfessorsetNome(Stringnome){this.nome=nome;returnthis;}publicintgetTempo(){returntempo;}publicProfessorsetTempo(inttempo){this.tempo=tempo;returnthis;}}classDisciplina{privateintcodigoDisciplina;privateinttempoCargaHorariaDisciplina;privateStringnomeDisciplina;privateProfessorprofessor;publicintgetCodigoDisciplina(){returncodigoDisciplina;}publicDisciplinasetCodigoDisciplina(intcodigoDisciplina){this.codigoDisciplina=codigoDisciplina;returnthis;}publicintgetTempoCargaHorariaDisciplina(){returntempoCargaHorariaDisciplina;}publicDisciplinasetTempoCargaHorariaDisciplina(inttempoCargaHorariaDisciplina){this.tempoCargaHorariaDisciplina=tempoCargaHorariaDisciplina;returnthis;}publicStringgetNomeDisciplina(){returnnomeDisciplina;}publicDisciplinasetNomeDisciplina(StringnomeDisciplina){this.nomeDisciplina=nomeDisciplina;returnthis;}publicProfessorgetProfessor(){returnprofessor;}publicDisciplinasetProfessor(Professorprofessor){this.professor=professor;returnthis;}}publicclassPrincipal{privateProfessorprof[]=newProfessor[3];privateDisciplinadis[]=newDisciplina[3];privateintcontarProf=prof.length;privateintcontarDisc=dis.length;privatevoiddescobreProfessor(Stringdisciplina){//Preciso imprimir o nome do professor a partir da disciplina que leciona. Pelo que fiz está a imprimir null.for(inti=0;i<contarProf;i++){if(disciplina.equalsIgnoreCase(dis[i].getNomeDisciplina())){JOptionPane.showMessageDialog(null,"O nome do professor de "+disciplina+" "+"é :"+prof[i].getNome());break;}}}publicPrincipal(){initialize();}privatevoidinitialize(){prof=newProfessor[]{newProfessor().setCodigo(1).setNome("Mário").setTempo(15).setTitulacao("Sei lá"),newProfessor().setCodigo(2).setNome("José").setTempo(20).setTitulacao("Sei lá"),newProfessor().setCodigo(3).setNome("Marta").setTempo(25).setTitulacao("Sei lá"),};dis=newDisciplina[]{newDisciplina().setCodigoDisciplina(3).setNomeDisciplina("matemática").setProfessor(prof[0]).setTempoCargaHorariaDisciplina(50),newDisciplina().setCodigoDisciplina(2).setNomeDisciplina("português").setProfessor(prof[1]).setTempoCargaHorariaDisciplina(40),newDisciplina().setCodigoDisciplina(1).setNomeDisciplina("história").setProfessor(prof[2]).setTempoCargaHorariaDisciplina(30),};}publicstaticvoidmain(String[]args){newPrincipal().descobreProfessor("matemática");newPrincipal().descobreProfessor("português");newPrincipal().descobreProfessor("história");}}