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

Dificuldade para criar array e exibir suas informações

Galera boa noite.

Estou com dificuldades para criar uma array de funcionários com 5 posições e acessar e imprimir suas informações. Poderiam analisar meu código e me ajudar a entender onde estou errando, pois tentei de todas as maneiras e até agora não consegui sair do lugar.

Obs: Criando apenas 1 funcionário, sem utilizar o array, consegui criar, inserir e imprimir as informações sem problemas.

class Funcionarios {

    double salarioMensal;    
    String cargo;
    Data dataEntrada;
    Pessoa func;
    Empresa emp;
    Funcionario[] funcionario;

    void recebeAumento(double valorAumento){

        this.salarioMensal += valorAumento;
        System.out.println("Parabens, voce recebeu um aumento salarial de R$" + valorAumento +"." + " Agora seu salario e: R$" + 
            salarioMensal + ".");

    }

    double calculaGanhoAnual(){

        double result = this.salarioMensal * 12;
        System.out.println("O rendimento anual e de: R$" + result + ".\n");
        return result;

    }

    String exibeNaTela(){

        String texto = emp.exibirEmpresa();
        texto += "***Dados do Funcionario***\n\n";
        texto += func.exibirPessoa();
        texto += "Salario: R$" + salarioMensal + "." + "\n";
        texto += "Cargo: " + cargo + "." + "\n";
        texto +=  dataEntrada.getFormatada();

        return texto;

    }

}

class Data {

    int dia;
    int mes;
    int ano;

    void preencheData(int dia, int mes, int ano){

        this.dia = dia;
        this.mes = mes;
        this.ano = ano;

    }

    String getFormatada() {

        String data = "Data de Admissao: " + this.dia + "/" + this.mes + "/" + this.ano + "." + "\n";
        return data;

    }

}

class Pessoa {

    String nome;
    String rg;
    String cpf;

    String exibirPessoa(){

        String texto = "Nome: " + nome + "." + "\n";
        texto += "RG: " + rg + "." + "\n";
        texto += "CPF: " + cpf + "." + "\n";

        return texto;

    }

}

class Empresa {

    String nomeEmpresa;
    String cnpj;

    String exibirEmpresa(){

        String texto = "***Dados da Empresa***\n\n"; 
        texto += "Nome da empresa: " + nomeEmpresa + "." + "\n";
        texto += "CNPJ: " + cnpj + "." + "\n\n";

        return texto;

    }

}

class FuncionariosMain {

    public static void main (String[] args){

        Funcionarios berrini = new Funcionarios();
        Pessoa p1 = new Pessoa();
        Data data = new Data();
        berrini.func = p1;
        berrini.dataEntrada = data;
        berrini.funcionario = new Funcionario[5];

        berrini.funcionario[0] = new Funcionario();
        berrini.funcionario[0].func.nome = "Osmair Zamana Junior";
        berrini.funcionario[0].func.rg = "12.345.678-9";
        berrini.funcionario[0].func.cpf = "123.456.789-10";
        berrini.funcionario[0].cargo = "Analista de Teste";
        berrini.funcionario[0].salarioMensal = 15000.0;
        berrini.funcionario[0].dataEntrada.preencheData(11, 8, 2015);

        Empresa empresa = new Empresa();
        berrini.funcionario[0].emp = empresa;
        berrini.funcionario[0].emp.nomeEmpresa = "Nome Fantasia S/A";
        berrini.funcionario[0].emp.cnpj = "12.345.678/0001-00";

        System.out.println(berrini.exibeNaTela());

        berrini.funcionario[0].calculaGanhoAnual();

        berrini.funcionario[0].recebeAumento(502.0);

    }
}

Obrigado...

5 respostas

Osmair, formata teu código. É só colocar ele dentro de inserir código, entre as ```

Osmair, envia teu condigo formatado, por favor, é só clicar no "<> inserir código". Porem tem uma coisa tem uma coisa que nao ta legal na classe Funcionario, que é o atributo "Funcionario [] funcionario" isso faz com que toda vez que tu instancie um Funcionario tu crie um arry de funcionarios dentro desse funcionario que tu crio, o que vai fazer tu entrar em um loop pq todo Funcionario vai ter um array de funcionario dentro dele. O ideal seria que você retirasse esse atributo da classe Funcionario e criasse o vetor na classe main dessa forma:

public class FuncionariosMain {
    public static void main (String[] args){
        Funcionario [] funcionarios = new Funcionario [5];

    }
}

E ai sim voce iria criando seu Funcionario e colocando dentro do seu arry funcionarios

Ola, tudo bom? Primeiramente parece que você escreveu o nome da sua primeira classe errado, para o código compilar deveria ser "Funcionario", e não "Funcionarios". E assim como o Matheus disse no post acima não faz sentido um "Funcionario" ter um array de "Funcionario" você poderia dar este atributo a classe "Empresa" que faria mais sentido.

solução!

Oi Osmair, sua dúvida foi esclarecida?

Boa noite.

Galera obrigado pelas explicações, forma muito úteis.