Dúvida

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;
                    }

                }

Solução:

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");

    }  



}