Tenho três classes como Principal com método main , professor e disciplina.
class Professor{
private int codigo;
private String titulacao;
private String nome;
private int tempo;
}
class disciplina {
private int codigoDisciplina;
private int tempoCargaHorariaDisciplina;
private String nomeDisciplina;
private Professor professor;
}
Principal{
Professor prof[] = new Professor[3];
Disciplina dis[] = new Disciplina[3];
int contarProf = 0;
int contarDisc = 0;
prof[contarProf] = new Professor();
dis[contarDisc] = new Disciplina();
}
Preciso imprimir o nome do professor a partir da disciplina que leciona. Pelo que fiz está a imprimir null.
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:
import javax.swing.JOptionPane;
class Professor{
private int codigo;
private String titulacao;
private String nome;
private int tempo;
public int getCodigo() {
return codigo;
}
public Professor setCodigo(int codigo) {
this.codigo = codigo;
return this;
}
public String getTitulacao() {
return titulacao;
}
public Professor setTitulacao(String titulacao) {
this.titulacao = titulacao;
return this;
}
public String getNome() {
return nome;
}
public Professor setNome(String nome) {
this.nome = nome;
return this;
}
public int getTempo() {
return tempo;
}
public Professor setTempo(int tempo) {
this.tempo = tempo;
return this;
}
}
class Disciplina {
private int codigoDisciplina;
private int tempoCargaHorariaDisciplina;
private String nomeDisciplina;
private Professor professor;
public int getCodigoDisciplina() {
return codigoDisciplina;
}
public Disciplina setCodigoDisciplina(int codigoDisciplina) {
this.codigoDisciplina = codigoDisciplina;
return this;
}
public int getTempoCargaHorariaDisciplina() {
return tempoCargaHorariaDisciplina;
}
public Disciplina setTempoCargaHorariaDisciplina(int tempoCargaHorariaDisciplina) {
this.tempoCargaHorariaDisciplina = tempoCargaHorariaDisciplina;
return this;
}
public String getNomeDisciplina() {
return nomeDisciplina;
}
public Disciplina setNomeDisciplina(String nomeDisciplina) {
this.nomeDisciplina = nomeDisciplina;
return this;
}
public Professor getProfessor() {
return professor;
}
public Disciplina setProfessor(Professor professor) {
this.professor = professor;
return this;
}
}
public class Principal{
private Professor prof[] = new Professor[3];
private Disciplina dis[] = new Disciplina[3];
private int contarProf = prof.length;
private int contarDisc = dis.length;
private void descobreProfessor(String disciplina){
//Preciso imprimir o nome do professor a partir da disciplina que leciona. Pelo que fiz está a imprimir null.
for (int i = 0; i < contarProf; i++) {
if (disciplina.equalsIgnoreCase(dis[i].getNomeDisciplina())) {
JOptionPane.showMessageDialog(null, "O nome do professor de " + disciplina+ " " + "é :" + prof[i].getNome());
break;
}
}
}
public Principal(){
initialize();
}
private void initialize(){
prof = new Professor[] {
new Professor().setCodigo(1).setNome("Mário").setTempo(15).setTitulacao("Sei lá"),
new Professor().setCodigo(2).setNome("José").setTempo(20).setTitulacao("Sei lá"),
new Professor().setCodigo(3).setNome("Marta").setTempo(25).setTitulacao("Sei lá"),};
dis = new Disciplina[]{
new Disciplina().setCodigoDisciplina(3).setNomeDisciplina("matemática").setProfessor(prof[0]).setTempoCargaHorariaDisciplina(50),
new Disciplina().setCodigoDisciplina(2).setNomeDisciplina("português").setProfessor(prof[1]).setTempoCargaHorariaDisciplina(40),
new Disciplina().setCodigoDisciplina(1).setNomeDisciplina("história").setProfessor(prof[2]).setTempoCargaHorariaDisciplina(30),
};
}
public static void main(String[] args) {
new Principal().descobreProfessor("matemática");
new Principal().descobreProfessor("português");
new Principal().descobreProfessor("história");
}
}