Java iniciante estou com dificuldades

pessoal me ajudem com esse exercício


import javax.swing.*;   
public class CadastroProdutos {   
   public static void main(String args[]){   
      Depart dep[]=new Depart[30];   
      Produto pro[]=new Produto[500];   
      int i=0, j=0;   
      while (true){   
String op=JOptionPane.showInputDialog("1-Cadastra Produto Departamento"+"\n"+
" 2-Pesquisa Produtos"+"\n"+" 3-Pesquisa Preços"+"\n"+" 4-sair");   
   if(op.equalsIgnoreCase("1")){   
   pro[i]=new Produto();   
pro[i].setNome(JOptionPane.showInputDialog("Digite o Nome do Produto"));   
pro[i].setPreco(Double.parseDouble(JOptionPane.showInputDialog("Digite o Preço do Produto")));   
pro[i].setNomedep(JOptionPane.showInputDialog("Digite o Nome do Departamento"));  
pro[i].setCodigo(Integer.parseInt(JOptionPane.showInputDialog("Digite o Código do Produto")));   
   
   dep[j]=new Depart();      
dep[j].setGerente(JOptionPane.showInputDialog("Digite o Nome do Gerente"));
dep[j].setNomedep(JOptionPane.showInputDialog("Digite o Nome do Departamento"));   
dep[j].setProduto(pro[i]);   
 i++;   
 j++;   
}   
else  
     if(op.equalsIgnoreCase("2")){ 
	   
String nomedep=JOptionPane.showInputDialog("Entre com o Nome do Departamento"); 
  for (i = 0; i < 500 ; i++){
  for (j = 0; j < 30 ; j++){
    if(nomedep.equalsIgnoreCase(dep[j].getNomedep())){   

JOptionPane.showMessageDialog(null,"Pesquisar Departamento "+"\n"+ 
"produtos : "+pro[i].getNome( )+"\n"+ 
"preços : "+pro[i].getPreco( )+"\n"+ 
"Codigo Nº : "+pro[i].getCodigo( )+"\n"+ 
"Gerente : "+dep[j].getGerente( )+"\n"+
"departamento : "+dep[j].getNomedep( )+"\n");
JOptionPane.showInputDialog("1-Cadastra Produto Departamento"+"\n"
+" 2-Pesquisa Produtos"+"\n"+" 3-Pesquisa Preços"+"\n"+" 4-sair");

 break;
 
}
}
}
}
        
      
  else  
     if(op.equalsIgnoreCase("3")){ 
String preco=JOptionPane.showInputDialog("Entre com a faixa de preço do produto");
      
      for (i = 0; i < 500 ; i++){
      for (j = 0; j < 30 ; j++){
  
     if(preco.equals(pro[i].getPreco())){   

JOptionPane.showMessageDialog(null,"Preços do produto "+"\n"+ 
 
"produtos : "+pro[i].getNome( )+"\n"+ 
"preços : "+pro[i].getPreco( )+"\n"); 
JOptionPane.showInputDialog("1-Cadastra Produto Departamento"+"\n"
+" 2-Pesquisa Produtos"+"\n"+" 3-Pesquisa Preços"+"\n"+" 4-sair");

  break;
} 
}
}
}

else  
if(op.equalsIgnoreCase("4"))  
   break;   
}
   
System.exit(0);   
}   
} 


-------------------------------------------------------------------------------------------------------------------------------------------------------------
public class Depart {   
   private String nomedep, gerente;   
   private Produto produto;   
      
   public Depart( ){   
   nomedep="";   
   gerente="";   
   produto = null;   
   }   
   public void setNomedep(String inomed){   
      nomedep=inomed;   
   }   
      
   public void setGerente(String igerente){   
      gerente=igerente;   
   }   
      
   public void setProduto(Produto c){   
      produto = c;   
   }   
   public String getNomedep( ){   
   return nomedep;   
   }   
      
   public String getGerente(){   
   return gerente;   
   }   
   public Produto getProduto(){   
   return produto;   
   }   
}  


-------------------------------------------------------------------------------------------------------------------------------------------------------------

public class Produto {   
   private String nome, nomedep;   
   private int codigo;   
   private double preco;   
      
   public Produto( ){   
   nome="";   
   preco=0;   
   nomedep="";   
   codigo=0;   
   }   
      
   public void setNome(String snom){   
   nome=snom;   
   }   
      
   public void setPreco(double prec){   
      preco= prec;   
   }   
   public void setNomedep(String snomedep){   
      nomedep=snomedep;   
   }   
   public void setCodigo(int icod){   
      codigo=icod;   
   }   
   public String getNome(){   
   return nome;   
   }   
      
   public double getPreco(){   
   return preco;   
   }   
   public String getNomedep(){   
      return nomedep;   
   }   
   public int getCodigo( ){   
   return codigo;   
   }   
}  


ta copilado mas ta dando erro os resultados não são os esperados

O sistema deve permitir:
1.Cadastramento de vários produtos.
2.Cadastramento de vários Departamentos.
3.Permitir a consulta dos produtos por departamento (solicitar que o usuário informe o departamento a pesquisar).
4.Permitir a consulta de produtos por faixa de preço (solicitar que o usuário informe a faixa de preço a consultar (valor mínimo e máximo do produto).

Velhinho, posta ai o stack dos erros q vc está recebendo…

abss

[b]
É o seguinte ele copila e não aponta erro, só que na hora de executar a primeira parte que é o cadastro de produtos ele faz certinho segunda parte ler produtos de um departamento tambem da certo só na hora de verificar a media de preços entre o menor e o maior é que não ta dando certo e a pesquisa tem vezes que não da certo mostra todos os departamentos cadastrados.

O sistema deve permitir:
1.Cadastramento de vários produtos.
2.Cadastramento de vários Departamentos.
3.Permitir a consulta dos produtos por departamento (solicitar que o usuário informe o departamento a pesquisar).
4.Permitir a consulta de produtos por faixa de preço (solicitar que o usuário informe a faixa de preço a consultar (valor mínimo e máximo do produto).
[]s
Zezinho
[/b]