Ainda não tem acesso? Estude com a gente! Matricule-se
Ainda não tem acesso? Estude com a gente! Matricule-se

Solucionado (ver solução)

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

Boa Noite, Pessoal estou tentando compilar o código abaixo porem sem sucesso não sei onde esta o erro, poderiam me ajudar.

Ja tentei chamar o método adiciona passando a posição ( emp.empregados[0].adiciona() ;) mas tive o mesmo erro, não entendi o porque ele não esta reconhecendo minha variável :

emp.empregados[0].nomeFant = "Tratoraq";

Grato pela ajuda .

class Funcionario{
    String nome;
    String departamento;
    double salario;
    Data dataEntrada;
    String rg;


    void mostra(){
            System.out.println("Nome: " + this.nome);
            System.out.println("Departamento: " + this.departamento);
            System.out.println("Salario: " + this.salario);
            System.out.println("Data Entrada: " + this.dataEntrada.getFormatada());
            System.out.println("RG: " + this.rg);
    }

}

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() {
         return this.dia + "/" + this.mes + "/" + this.ano;
      }



}

class Empresa{
    String cnpj;
    String nomeFant;
    String endereco;
    String telefone;
    Funcionario [] empregados;

    void adiciona(Funcionario func){
        for (int i=0;i < this.empregados.length;i++){
            if(empregados[i]==null){
                this.empregados[i]= func;    
            }else{
                continue;
            }
        }
    }

}


class TesteFunc{
    public static void main(String[] args){

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

        emp.empregados[0].nome = "Alex Santos";
        emp.empregados[0].departamento = "Vendas"; 
        emp.empregados[0].nomeFant = "Tratorag";
        emp.empregados.adiciona();

        emp.empregados[0].mostra();

    }

}
5 respostas

Boa noite,

tentei compilar seu código e apresentou um erro no atributo nomeFant que é um atributo de Empresa não poderia ser atribuído a emp que é um empregado. Aparentemente é o mesmo erro de adiciona() que não existe na classe empregados, mas em Empresa.

João Rodolfo

Obrigado Rodolfo, mas como deveria ficar ?

Obrigado

Olá Ataide,

Tenta assim:

class TesteFunc{
    public static void main(String[] args){

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

    Funcionario f = new Funcionario();
    f.nome = "Alex Santos";
    f.departamento = "Vendas"; 
    f.salario = 5000;


     emp.adiciona(f);

    }

}

Tem variáveis sem valores, mais é só pra teste. O importante e você entender que primeiro instancia o objeto funcionario e depois adiciona ele noa array empregados através do método adiciona.

Boa Tarde

Ramos então o emp.empregados, não e o meu objeto e sim o " f ", desculpa ma e meio confuso.

Este código todo aqui abaixo e só para a criação do array que ira receber meu funcionário , e o restante e como fazemos como no inicio de instanciar meu Objeto e isso mesmo ? Porem eu coloco ele dentro do array Criado.

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

Obrigado

solução

Isso mesmo Ataide,

Primeiro instanciamos o objeto da classe Empresa .

Depois "setamos" a variavel empregados da classe Empresa, que é do tipo array de funcionario, para ter 10 posições, começando do zero até 9.

Depois cada vez que instanciarmos um objeto da classe funcionario podemos adicionar esse objeto criado no array de funcionario através do método adicona() que existe na classe Empresa.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software