Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Array - Exercicio 6 - Por favor preciso de ajuda para saber por que não executa emp.contem()

class FuncionarioEx6 {
        String nome;
        String depto;
        double salario;
        Data datEntradaBanco;
        String  rg;
}

class Data {
      int dia;
      int mes;
      int ano;
}

class Empresa {
      String nomeEmpresa;
      String cnpj;
      FuncionarioEx6[] funcionarios;

      int ponteiro = 0; // Contador para ir incrementando cada um dos funcionarios que estão sendo adicionados

      void mostraEmpresa() {
             System.out.println(this.nomeEmpresa);
             System.out.println(this.cnpj);
      }

      void adicionar(FuncionarioEx6 f) {
                   this.funcionarios[ponteiro] =f; // recebe o funcionario que esta sendo adicionado 
              ponteiro++; // incrementa para a proxima posicao livre
      }

      void mostraDadosFunc() {
          for(int i = 0; i < this.funcionarios.length; i++) {
              FuncionarioEx6 func = this.funcionarios[i];
              if(func == null) continue;
              System.out.println("Nome: " + func.nome);
              System.out.println("Depto: " + func.depto);
              System.out.println("Salario:" + func.salario);
              System.out.println("RG: "     + func.rg);
              System.out.println("============================================");
          }
      }


      boolean contem(FuncionarioEx6 f) {
          boolean retorno = False;  
          for(int i = 0; i < this.funcionarios.length; i++) {
              FuncionarioEx6 func = this.funcionarios[i];
              if(func == null) continue;
              if(this.funcionarios[i].nome == f.nome) {
                 retorno = True;
              } 
          }
          return retorno;
      }
}

class TestaEmpresa {
    public static void main(String[] args) {
         Empresa emp = new Empresa();
         emp.nomeEmpresa = "Softwork";
         emp.cnpj = "12345678901";
         emp.mostraEmpresa();

         emp.funcionarios = new FuncionarioEx6[10];

         // Para utilizar o metodo adiciona, cria um funcionario e depois
         // passa ele para o metodo adiciona da classe Empresa

         FuncionarioEx6 f1 = new FuncionarioEx6();
         f1.nome = "Ricardo";
         f1.depto = "Informatica";
         f1.salario = 10000.0;
         f1.rg       = "123456";
         f1.datEntradaBanco = new Data();
         f1.datEntradaBanco.dia = 10;
         f1.datEntradaBanco.mes = 8;
         f1.datEntradaBanco.ano = 2011;
         emp.adicionar(f1);    // Clase Empresa recebendo o funcionario      

         FuncionarioEx6 f2 = new FuncionarioEx6();
         f2.nome = "Cida";
         f2.depto = "Financeiro";
         f2.salario = 4500.0;
         f2.rg       = "9876543";
         f2.datEntradaBanco = new Data();
         f2.datEntradaBanco.dia = 10;
         f2.datEntradaBanco.mes = 8;
         f2.datEntradaBanco.ano = 2011;
         emp.adicionar(f2);          

         FuncionarioEx6 f3 = new FuncionarioEx6();
         f3.nome = "Leticia";
         f3.depto = "Engenharia";
         f3.salario = 15000.0;
         f3.rg       = "12312345";
         f3.datEntradaBanco = new Data();
         f3.datEntradaBanco.dia = 21;
         f3.datEntradaBanco.mes = 12;
         f3.datEntradaBanco.ano = 2015;
         emp.adicionar(f2);          
         emp.mostraDadosFunc();


// Porque não esta executando essa parte
         boolean contemFuncionario = emp.contem(f1);
         System.out.println(contemFuncionario);
         if (contemFuncionario == True) {
             System.out.println("O funcionario " + f1.nome + " existe na empresa");  
         } else { System.out.println("O funcionario " + f1.nome + " não existe na empresa");            
         }


    }
}
Não da erro de compilação, mas quando eu executo não mostra a parte 
// Porque não esta executando essa parte ???
         boolean contemFuncionario = emp.contem(f1);
         System.out.println(contemFuncionario);
         if (contemFuncionario == True) {
             System.out.println("O funcionario " + f1.nome + " existe na empresa");  
         } else { System.out.println("O funcionario " + f1.nome + " não existe na empresa");            
         }
2 respostas

oi Ricardo, tudo bem? esse System.out.println esta retornando o esperado?

tente mudar os valores booleanos a digitação dos booleans para letra minúscula, tudo que for True, mude para true e o que for False mude para false

solução!
class FuncionarioEx6 {
        String nome;
        String depto;
        double salario;
        Data datEntradaBanco;
        String  rg;
}

class Data {
      int dia;
      int mes;
      int ano;
}

class Empresa {
      String nomeEmpresa;
      String cnpj;
      FuncionarioEx6[] funcionarios;

      int ponteiro = 0; // Contador para ir incrementando cada um dos funcionarios que estão sendo adicionados

      void mostraEmpresa() {
             System.out.println(this.nomeEmpresa);
             System.out.println(this.cnpj);
      }

      void adicionar(FuncionarioEx6 f) {
                   this.funcionarios[ponteiro] =f; // recebe o funcionario que esta sendo adicionado 
              ponteiro++; // incrementa para a proxima posicao livre
      }

      void mostraDadosFunc() {
          for(int i = 0; i < this.funcionarios.length; i++) {
              FuncionarioEx6 func = this.funcionarios[i];
              if(func == null) continue;
              System.out.println("Nome: " + func.nome);
              System.out.println("Depto: " + func.depto);
              System.out.println("Salario:" + func.salario);
              System.out.println("RG: "     + func.rg);
              System.out.println("============================================");
          }
      }


      boolean contem(FuncionarioEx6 f) {
          boolean retorno = false;  
          for(int i = 0; i < this.funcionarios.length; i++) {
              FuncionarioEx6 func = this.funcionarios[i];
              if(func == null) continue;
              if(this.funcionarios[i].nome == f.nome) {
                 retorno = true;
                 break;
              } 
          }
          return retorno;
      }
}

class TestaEmpresa {
    public static void main(String[] args) {
         Empresa emp = new Empresa();
         emp.nomeEmpresa = "Softwork";
         emp.cnpj = "12345678901";
         emp.mostraEmpresa();

         emp.funcionarios = new FuncionarioEx6[10];

         // Para utilizar o metodo adiciona, cria um funcionario e depois
         // passa ele para o metodo adiciona da classe Empresa

         FuncionarioEx6 f1 = new FuncionarioEx6();
         f1.nome = "Ricardo";
         f1.depto = "Informatica";
         f1.salario = 10000.0;
         f1.rg       = "123456";
         f1.datEntradaBanco = new Data();
         f1.datEntradaBanco.dia = 10;
         f1.datEntradaBanco.mes = 8;
         f1.datEntradaBanco.ano = 2011;
         emp.adicionar(f1);    // Clase Empresa recebendo o funcionario      

         FuncionarioEx6 f2 = new FuncionarioEx6();
         f2.nome = "Cida";
         f2.depto = "Financeiro";
         f2.salario = 4500.0;
         f2.rg       = "9876543";
         f2.datEntradaBanco = new Data();
         f2.datEntradaBanco.dia = 10;
         f2.datEntradaBanco.mes = 8;
         f2.datEntradaBanco.ano = 2011;
         emp.adicionar(f2);          

         FuncionarioEx6 f3 = new FuncionarioEx6();
         f3.nome = "Leticia";
         f3.depto = "Engenharia";
         f3.salario = 15000.0;
         f3.rg       = "12312345";
         f3.datEntradaBanco = new Data();
         f3.datEntradaBanco.dia = 21;
         f3.datEntradaBanco.mes = 12;
         f3.datEntradaBanco.ano = 2015;
         emp.adicionar(f2);          
         emp.mostraDadosFunc();

         boolean contemFuncionario = emp.contem(f1);
         if (contemFuncionario == true) {
             System.out.println("O funcionario " + f1.nome + " existe na empresa");  
         } else { System.out.println("O funcionario " + f1.nome + " não existe na empresa");            
         }


    }
}

Segue o código correto. Alem de alterar para minusculo false e true incluído um break quando o if for igual a true.