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

Dúvida no Ex. 3 da Aula 4 - Arrays

Boa noite a todos!

Estou com algumas dificuldade, são elas: Infelizmente não consegui localizar o meu erro na hora de imprimir a data. A outra é a respeito do tamanho do meu Array. Gostaria que ele tivesse 10 espaços ( emp.colaboradores = new Funcionario[10];) e que não desce erro se eu não adicionasse em todos os índices.

class Empresa{

    String nome;
    String cnpj;
    String end;
    String cid;
    String pais;
    int livre = 0;
    Funcionario[] colaboradores;

    void adiciona(Funcionario f){

        this.colaboradores[this.livre] = f;
        this.livre++;
    }

    void mostra(){

    System.out.println("\n\n++++++++++++++++++++++++++++++++++++++++++++\n\n");
            System.out.println("_______DADOS EMPRESA_______\n");
            System.out.println("Nome da empresa: " +this.nome);
            System.out.println("CNPJ:" +this.cnpj);
            System.out.println("Endereço: " +this.end);
            System.out.println("Cidade: " +this.cid);
            System.out.println("País: " +this.pais);
        System.out.println("\n\n++++++++++++++++++++++++++++++++++++++++++++\n\n");

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

            System.out.println("\n_______Funcionario na posição: "+i+"_______\n");
            System.out.println("Nome do funcionário: " +this.colaboradores[i].nome);
            System.out.println("Cargo: " +this.colaboradores[i].func);
            System.out.println("CPF: " +this.colaboradores[i].cpf);
            System.out.println("Idade: " +this.colaboradores[i].idade);
            System.out.println("Salário: " +this.colaboradores[i].salario);
            System.out.println("Data de entrada: " +this.colaboradores[i].dataEntrada);
            System.out.println("\n\n----------------------------------------\n\n");
            if(colaboradores != null) continue;    
        }
    }
}

class Funcionario{

    String nome;
    String func;
    String cpf;
    int idade;
    double salario;
    Data dataEntrada;    
}

class Data{

    int dia;
    int mes;
    int ano;

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

        return this.dia+"/"+this.mes+"/"+this.ano;
    }
}

class A4_3_Array{

    public static void main (String[] args) {

        Empresa emp = new Empresa();
        emp.colaboradores = new Funcionario[2];

        emp.nome = "Tti";
        emp.cnpj = "xxx.xxx.xxx.xxx";
        emp.end    = "Rua Torvalds, 01";
        emp.cid = "Coromandel";
        emp.pais = "Brasil";

        Funcionario f1 = new Funcionario();
        f1.nome = "Maicon";
        f1.func = "T.I";
        f1.cpf = "xxx.xxx.xxx";
        f1.idade = 25;
        f1.salario = 10500;
        f1.dataEntrada = new Data();
        f1.dataEntrada.preencheData(22, 02, 2014);
        emp.adiciona(f1);

        Funcionario f2 = new Funcionario();
        f2.nome = "Dalila";
        f2.func = "Analista";
        f2.cpf = "xxx.xxx.xxx";
        f2.idade = 30;
        f2.salario = 5300;
        f2.dataEntrada = new Data();
        f2.dataEntrada.preencheData(17, 05, 2015);
        emp.adiciona(f2);

        emp.mostra();
    }
}

Muito grato, se puder ser atendido.

3 respostas

Maicon oque eu entendi é que você tem um array de Funcionario certo? e ele tem 10 elementos dentro ne? oque você pergunto foi se você tem 10 elementos e quer adicionar 7, e da um erro porque não foi adicionado os 10? Pelo que eu vi na sua classe Data tem um metodo que o retorno dele é uma String né? Pelo que eu vi, esta sem as "" o seu retorno, eu acho que pode ser isso o erro das datas amigo

Caro Alisson, ótima noite! Agradeço sua resposta. O problema era outro. A título de informação, segue abaixo o código completo.

class Empresa{

    String nome;
    String cnpj;
    String end;
    String cid;
    String pais;
    int livre = 0;
    Funcionario[] colaboradores;

    void adiciona(Funcionario f){

        this.colaboradores[this.livre] = f;
        this.livre++;
    }

    void mostra(){

        System.out.println("\n\n++++++++++++++++++++++++++++++++++++++++++++\n\n");
        System.out.println("_______DADOS EMPRESA_______\n");
        System.out.println("Nome da empresa: " +this.nome);
        System.out.println("CNPJ:" +this.cnpj);
        System.out.println("Endereço: " +this.end);
        System.out.println("Cidade: " +this.cid);
        System.out.println("País: " +this.pais);
        System.out.println("\n\n++++++++++++++++++++++++++++++++++++++++++++\n\n");

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

            System.out.println("\n_______Funcionario na posição: "+i+"_______\n");
            System.out.println("Nome do funcionário: " +this.colaboradores[i].nome);
            System.out.println("Cargo: " +this.colaboradores[i].func);
            System.out.println("CPF: " +this.colaboradores[i].cpf);
            System.out.println("Idade: " +this.colaboradores[i].idade);
            System.out.println("Salário: " +this.colaboradores[i].salario);
            System.out.println("Salário anual: " +this.colaboradores[i].calculoGanhoAnual());
            System.out.println("Data de entrada: " +this.colaboradores[i].dataEntrada.setDataFormatada());
            System.out.println("\n\n----------------------------------------\n\n");
        }
    }
}

class Funcionario{

    String nome;
    String func;
    String cpf;
    int idade;
    double salario;
    Data dataEntrada;

    void getAumentoSalario(double salario){

        if(salario >= 788 && salario <= 1576){
            this.salario += salario + salario * 0.1;
        }
        else if(salario >= 3152 && salario <= 5516){
            this.salario += salario + salario * 0.07;
        }
        else if(salario >= 5516){
            this.salario += salario + salario * 0.05;
        }
        else
            System.out.println("Opção Inválida!");    
    }    
    double calculoGanhoAnual(){
        return this.salario * 12;
    }
}

class Data{

    int dia;
    int mes;
    int ano;

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

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

    String setDataFormatada(){
    //
        return this.dia+"/"+this.mes+"/"+this.ano;

        /*
        Date date = ...;  // wherever you get this
        DateFormat df = new SimpleDateFormat("dd\MM\YYYY");
        String text = df.format(date);
        System.out.println(text);
        */
    }
}

class A4_3_Array{

    public static void main (String[] args) {

        Empresa emp = new Empresa();
        emp.colaboradores = new Funcionario[10];

        emp.nome = "Tti";
        emp.cnpj = "xxx.xxx.xxx.xxx";
        emp.end    = "Rua Torvalds, 01";
        emp.cid = "Coromandel";
        emp.pais = "Brasil";

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

        f1.nome = "Maicon";
        f1.func = "T.I";
        f1.cpf = "xxx.xxx.xxx";
        f1.idade = 25;
        f1.getAumentoSalario(13000);
        f1.dataEntrada.getPreencheData(22, 02, 2014);
        emp.adiciona(f1);

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

        f2.nome = "Dalila";
        f2.func = "Analista";
        f2.cpf = "xxx.xxx.xxx";
        f2.idade = 30;
        f2.getAumentoSalario(5300);
        f2.dataEntrada.getPreencheData(17, 05, 2015);
        emp.adiciona(f2);

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

        f3.nome = "Túlio";
        f3.func = "Me. professor";
        f3.cpf = "xxx.xxx.xxx";
        f3.idade = 25;
        f3.getAumentoSalario(15300);
        f3.dataEntrada.getPreencheData(22, 12, 2016);
        emp.adiciona(f3);

        emp.mostra();
    }
}
solução!

Ai sim mano que bom que arrumo o erro, bons estudos