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

Dúvidas no Exec. 6 da Aula 5 - Modificadores de acesso

Uma ótima tarde, senhores!

Estou encontrando dificuldades em corrigir o meu código. Desde o inicio tentei fazer um pouco diferente (utilizando o Scanner), mas depois que mudei o modificador de acesso do "Funcionario - public Funcionario[ ] colaboradores; " para "private", não estou conseguindo mais passar e nem imprimir os valores (devo ter deixado escapar algo importante). Ressalto que até o exercício anterior, tudo funcionava.

Se puderem me dar umas dicas de como consertar o(s) erro(s) e confirmar que o código está no caminho certo. Fico muito agradecido!

*Qualquer sugestão ou critica será muito bem recebida!

/*
* Crie os getters e setters da sua classe Empresa e coloque seus atributos como private. Lembre-se de que não necessariamente todos os atributos devem ter getters e * setters.
* Por exemplo, na classe Empresa, seria interessante ter um setter e getter para a sua array de funcionários? Não seria mais interessante ter um método como este?
*/

import java.util.Scanner;

class Empresa{

    private String nomeEmpresa;
    private String cnpj;
    private String endereco;
    private String cidade;
    private String pais;
    private  Funcionario[] colaboradores;
    private int livre;

    public Funcionario getColaboradores(int posicao){

        return this.colaboradores[posicao];    
    }

    public void setFuncionario(Funcionario[] colaboradores){

        this.colaboradores = colaboradores;
    }    

    public boolean contem(Funcionario f){

        for(int i = 1; i < this.livre; i++){ // Era colaboradores.length

            if(this.colaboradores[i] != null){

                if(this.colaboradores[i] == f){

                    System.out.println("*  O funcionário já consta no banco de dados!");
                    System.out.println("\n\n##############################################################\n");
                    return true;
                }
            }

        }
            System.out.println("*  O funcionário foi cadastrato no banco de dados!");
            System.out.println("\n\n##############################################################\n");
            return false;        
    }

    /*
    boolean contem(String nm){

        for(int i = 0; i < this.colaboradores.length; i++){

            if(this.colaboradores[i].nome.equals(nm)){
                return true;
            }
        }
        return false;
    }
    */
    public void adicionar(Funcionario f){

        for(livre = 0; livre < this.colaboradores.length; livre++) {

            if(this.colaboradores[livre] == null) {

                this.colaboradores[livre] = f;
                System.out.println("\n--------------------------------------------");
                System.out.println("|  Cadastro de: " +this.colaboradores[livre].getNome()+ " salvo com sucesso  |");
                System.out.println("--------------------------------------------");                
                return;
            } else
                continue;
        }
    }

    public String getNomeEmpresa( ){

        return this.nomeEmpresa;
    }

    public void setNomeEmpresa(String nomeEmpresa){

        this.nomeEmpresa = nomeEmpresa;
    }

    public String getCnpj(){

        return this.cnpj;
    }

    public void setCnpj(String cnpj){

        this.cnpj = cnpj;
    }

    public String getEndereco(){

        return this.endereco;
    }

    public void setEndereco(String endereco){

        this.endereco = endereco;
    }

    public String getCidade(){

        return this.cidade;
    }

    public void setCidade(String cidade){

        this.cidade = cidade;
    }

    public String getPais(){

        return this.pais;
    }

    public void setPais(String pais){

        this.pais = pais;
    }

    public int getLivre(){

        return this.livre;
    }

    public void setLivre(int livre){

        this.livre = livre;
    }

    /*
    public void mostraTodasInformacoes(){

        for(int i = 0; i < this.livre; i++){

            System.out.println(this.colaboradores[i].mostra());
        }
    }

    public void mostraEmpregados(){
        for(int i = 0; i < this.livre; i++){
            System.out.println(this.colaboradores[i].getNome());
            System.out.println("############");
        }
    }
    */
    public void mostra(){

        System.out.println("___________DADOS DA EMPRESA:___________");
        System.out.println("|  Nome da empresa: " +this.getNomeEmpresa());
        System.out.println("|  Número do CNPJ: " +this.getCnpj());
        System.out.println("|  Endereço: " +this.getEndereco());
        System.out.println("|  Cidade: " +this.getCidade());
        System.out.println("|  Pais: " +this.getPais());    
        System.out.println("-_-_-_-__-_-_-_-__-_-_-_-__-_-_-_-__-_-_-_-\n\n\n");

        for(int i = 0; i <= this.livre; i++){

            if(this.colaboradores == null) continue;
            System.out.println("___________DADOS DO FUNCIONARIO:___________");
            System.out.println("|  Funcionario na posição: "+i);
            System.out.println("|  Nome do funcionário: " +this.colaboradores[i].getNome());
            System.out.println("|  Departamento: " +this.colaboradores[i].getDepart());
            System.out.println("|  Data de Entrada: " +this.colaboradores[i].dataEntrada.getDataFormatada());
            System.out.println("|  Número do RG: " +this.colaboradores[i].getRg());
            System.out.println("|  Salário atualizado: R$" +this.colaboradores[i].getSalario());
            System.out.println("|  Ganho anual: R$" +this.colaboradores[i].calculaGanhoAnual());    
            System.out.println("______________________________________\n");            
        }
    }
}
class Funcionario{

        private String nome;
        private String depart;
        private double salario;
        private double salarioAnual;
        public Data dataEntrada;
        private String rg;

        public String getNome(){

            return this.nome;
        }

        public void setNome(String nome){

            this.nome = nome;
        }

        public String getDepart(){

            return this.depart;
        }

        public void setDepart(String depart){

            this.depart = depart;
        }

        public double getSalario(){

            return this.salario;
        }

        public void setSalario(double salario){

            this.salario = salario;
        }

        public double calculaGanhoAnual(){

            return this.salario * 12;
        }

        public void recebeAumento (double salarioAtual){

            if(salarioAtual >= 0 && salarioAtual <= 1874){

                this.salario = salarioAtual + salarioAtual * 0.1; //arumartttttttttttttttttttttttttttt
            }
            else if(salarioAtual > 1874 && salarioAtual <= 4685){

                this.salario = salarioAtual + salarioAtual * 0.07;
            }
            else if(salarioAtual > 4685){

                this.salario = salarioAtual + salarioAtual * 0.05;
            }else{
                System.out.println("\n|  Opção Inválida!");    
            }
        }

        public String getRg(){

            return this.rg;
        }

        public void setRg(String rg){

            this.rg = rg;
        }
}
class Data{

    int dia, mes, ano;

    public void setDataFormatada(int dia, int mes, int ano){

        this.dia = dia;
        this.mes = mes;
        this.ano = ano;
    }
    public String getDataFormatada(){

        return this.dia+"/"+this.mes+"/"+this.ano;
    }
}
class Principal_Exec_05_04 {

    public static void main (String [] args){    

        Scanner leia1 = new Scanner(System.in);
        Scanner leia2 = new Scanner(System.in);

        Empresa emp = new Empresa();
        Funcionario[] colaboradores = new Funcionario[10];
        emp.setFuncionario(colaboradores);    //emp.colaboradores = new Funcionario[2]; Metódo antigo


        emp.setNomeEmpresa("SuperTi");
        emp.setCnpj("100.100.100-90");
        emp.setEndereco("Rua Logan, 11");
        emp.setCidade("Cold Lake");
        emp.setPais("Canadá");

        System.out.println("\n\n\n##############################################################\n");
        System.out.println("___________Preencher os dados dos funcionários___________\n");

        for(int i = 0; i < emp.getLivre(); i++){ 


            Funcionario f = new Funcionario();
            f.dataEntrada = new Data();

            System.out.print("|  Nome: ");            
            f.setNome(leia1.nextLine());
            System.out.print("|  Departamento: ");
            f.setDepart(leia1.nextLine());
            System.out.print("|  Digite a Data de entrada: ");
            f.dataEntrada.setDataFormatada(leia2.nextInt(), leia2.nextInt(), leia2.nextInt());
            System.out.print("|  RG: ");
            f.setRg(leia1.nextLine());
            System.out.print("|  Salário: ");
            f.recebeAumento(leia2.nextDouble());

            //System.out.println(emp.contem(f));
            emp.adicionar(f);    
            emp.contem(emp.getColaboradores(emp.getLivre()));    

        }

        emp.mostra();
        //emp.mostraEmpregados();
        System.out.println("\n##############################################################\n");
    }
}
3 respostas

Um dos problemas é que a variável livre precisa ser inicializada:

 private int livre=2;

Se ela não for inicializada, assumirá o valor 0 e o código abaixo não funcionará.

for(int i = 0; i < emp.getLivre(); i++){

Há outros problemas no código. Estou verificando aqui. São problemas de lógica.

solução!

Fiz umas mudanças no código e publiquei. Dê uma olhada:

https://docs.google.com/document/d/1u8ONST23Qa-weFDU1MqzUxzywn5rcbOmvt4RaMSUbhc/edit?usp=sharing

Grande Gabriel, muito obrigado!

Estarei estudando o código modificado.

Desejo sucesso em sua jornada!