Unreachable code--Por que?

Boa tarde, não consigo compilar o meu programa por causa de um erro(à princípio) em um dos métodos. Alguém pode verificar aonde que está errado?
ai está a bagaça:


public class Empresa {
	
	private String nome;
	private int cnpj;
	Funcionario funcionario;
	
	    public void setNome(String nome) {
	    	this.nome = nome;
	    }
	    
	    public String getNome() {
	    	return nome;
	    } 
	    
	    public void setcnpj(int cnpj) {
	    	this.cnpj = cnpj;
	    }
	    
	    public int getcnpj() {
	    	return cnpj;
	    }
	    
	    public void imprimeDesenvolvedor(){
	    	for(int i = 0; i < this.funcionario.desenvolvedor.length; i++){
	    		Desenvolvedor d = this.funcionario.desenvolvedor[i];
	    		if(d == null); continue;
	    		    System.out.println("Desenvolvedor: " + d.pessoal.getNome());
				    System.out.println("Departamento: " + d.departamento);
				    System.out.println("Salário: R$" + d.getSalario());
				    System.out.println("------------------------------------------ ");
	    	}
	    }
	
}

abstract class Funcionario {
		
	private double salario;
	String departamento;
	int iscriçao;
	DadosPessoais pessoal;
	Data dataDeEntrada;
	Gerente[] gerente;
	Desenvolvedor[] desenvolvedor;
	
	   
	    public void setSalario(double salario) {
	    	this.salario = salario;	    	
	    }
	    
	    public double getSalario() {
	    	return salario;
	    }
	    
	    public void setAumento(double valorAumento) {
	    	this.salario += valorAumento;
	    }
	    
	    public void ganhoAnual() {
	    	double cash = this.salario;
	    	System.out.println(cash *= 12);
	    }
	
}

class Gerente extends Funcionario {
	
	public Gerente(int inscriçao) {
		this.iscriçao = inscriçao;
	}
	
}

class Desenvolvedor extends Funcionario {
		
	public Desenvolvedor(int inscriçao) {
		this.iscriçao = inscriçao;
	}
}

class DadosPessoais {
	
	String nome;
	String dataDeNascimento;
	int rg;
	
	    public String getNome() {
		    return nome;
	    }
	    public void setNome(String nome) {
		    this.nome = nome;
	    }
	    
	    
}

class Data {
	
	int dia;
	int mes;
	int ano;
	
	    public void setData(int dia, int mes, int ano) {
	    	this.dia = dia;
	    	this.mes = mes;
	    	this.ano = ano;
	    }
	    
	    public String getData() {
	    	return this.dia + "/" + this.mes + "/" + this.ano; 
	    }
	
}

class TestaEmpresa {
	public static void main(String[] args) {
		
		Empresa genos = new Empresa();
		genos.setNome("Genos Corp.");
		genos.setcnpj(987654321);
/**************************************************************************************/	
		
		genos.funcionario.gerente = new Gerente[04];
/*===============================================================*/		
		genos.funcionario.gerente[0] = new Gerente(123);
		genos.funcionario.gerente[0].setSalario(3_500.0);
		genos.funcionario.gerente[0].setAumento(250.0);
		genos.funcionario.gerente[0].departamento = "Criação";
/*===============================================================*/
		genos.funcionario.gerente[0].pessoal = new DadosPessoais();
		genos.funcionario.gerente[0].pessoal.nome = "Baltazar Tidat";
		genos.funcionario.gerente[0].pessoal.dataDeNascimento = "03/07/1985";
		genos.funcionario.gerente[0].pessoal.rg = 587964231;
/*===============================================================*/
		genos.funcionario.gerente[0].dataDeEntrada = new Data();
		genos.funcionario.gerente[0].dataDeEntrada.setData(05, 11, 2012);
/**************************************************************************************/
		
		genos.funcionario.desenvolvedor = new Desenvolvedor[10];
/*===============================================================*/
		genos.funcionario.desenvolvedor[0] = new Desenvolvedor(456);
		genos.funcionario.desenvolvedor[0].setSalario(2_250.0);
		genos.funcionario.desenvolvedor[0].setAumento(130.0);
		genos.funcionario.desenvolvedor[0].departamento = "Jogos Digitais";
/*===============================================================*/
		genos.funcionario.desenvolvedor[0].pessoal = new DadosPessoais();
		genos.funcionario.desenvolvedor[0].pessoal.nome = "Julieu Romieleta";
		genos.funcionario.desenvolvedor[0].pessoal.dataDeNascimento = "01/04/1987";
		genos.funcionario.desenvolvedor[0].pessoal.rg = 123546987;
/*===============================================================*/
		genos.funcionario.desenvolvedor[0].dataDeEntrada = new Data();
		genos.funcionario.desenvolvedor[0].dataDeEntrada.setData(05, 10, 2009);
/**************************************************************************************/
		
		
		System.out.println("oi");
		genos.imprimeDesenvolvedor();
		
		
		
	}
}

E o erro:

Exception in thread "main" java.lang.NullPointerException
	at Empresa2.TestaEmpresa.main(Empresa.java:127)

Só faltou a bagaça do erro pra ajudar quem vai te ajudar a te ajudar??? Entendeu essa bagaça???

if(d == null); continue; 

modifica para

if(d == null){ 
     continue; 
}

ou só retira o “;” depois do if
o “;” depois do if faz que o continue sempre seja executado deixando o System.out depois ali não alcançavel
Recomendo sempre usar as “{” para todo tipo de construção para evitar este tipo de erro além de melhorar a legibilidade do código

O problema é que eu não sei onde errei.kkkkkkkk.

[quote=duardor]if(d == null); continue;
modifica para

if(d == null){ 
     continue; 
}

ou só retira o “;” depois do if
o “;” depois do if faz que o continue sempre seja executado deixando o System.out depois ali não alcançavel
Recomendo sempre usar as “{” para todo tipo de construção para evitar este tipo de erro além de melhorar a legibilidade do código
[/quote]

Valeu pela dica duardor mas infelizmente não resolveu o problema. Acho melhor começar do zero.

Unreachable code quer dizer que algum trecho do seu código nunca será atingido. A melhor maneira de evitar esse erro é evitar fluxos complicados, isso implica evitar instruções como break e continue. Ao invés de usar:

if(d == null); continue;  

para quebrar o fluxo, teste a condição necessária para entrar no bloco:

if(d != null){
      System.out.println("Desenvolvedor: " + d.pessoal.getNome());  
      System.out.println("Departamento: " + d.departamento);  
      System.out.println("Salário: R$" + d.getSalario());  
      System.out.println("------------------------------------------ ");  
}

[quote=rmendes08]Unreachable code quer dizer que algum trecho do seu código nunca será atingido. A melhor maneira de evitar esse erro é evitar fluxos complicados, isso implica evitar instruções como break e continue. Ao invés de usar:

if(d == null); continue;  

para quebrar o fluxo, teste a condição necessária para entrar no bloco:

if(d != null){ System.out.println("Desenvolvedor: " + d.pessoal.getNome()); System.out.println("Departamento: " + d.departamento); System.out.println("Salário: R$" + d.getSalario()); System.out.println("------------------------------------------ "); } [/quote]

Valeu rmendes08, realmente resolveu o problema do Unreachable code. Obrigado cara. Abraço.

O problema é que eu não sei onde errei.kkkkkkkk.[/quote]

O erro não indica pelo menos a linha do problema? Você pode colocar um comentário no código indicando para nós onde sua IDE ou o Java está acusando o erro.

O problema é que eu não sei onde errei.kkkkkkkk.[/quote]

O erro não indica pelo menos a linha do problema? Você pode colocar um comentário no código indicando para nós onde sua IDE ou o Java está acusando o erro. [/quote]

Editei o código, já com o erro mostrado pela minha IDE, se puder dar uma olhada eu agradeço.[/quote]

Você, em momento nenhum, fez new em Funcionario. Por isso, o campo funcionário ainda está nulo e ao tentar acessar o “.gerente” ele vai te dar a NullPointerException.