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

Dúvida

Bom dia, galera! Não estou conseguindo compilar meu código.. Dá o seguinte erro: "funcionario.java:70: error: cannot find symbol funcionarios = this.Funcionario[this.tamanho]; ^ symbol: variable Funcionario 1 error"

Codigo:

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

    void numeros (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 Funcionario{
    String nome;
    public String departamento;
    private double salario;
    public Data data;
    public String rg;
    public int ganhoAnual;

    void recebeAumento (double aumento) {
        this.salario += aumento;
    }
    public Funcionario (String nome){
        this.nome = nome;
    }

    public Funcionario (){

    }

    void mostra () {
        System.out.println(this.nome);
        System.out.println(this.departamento);
        System.out.println(this.salario);
        System.out.println(this.data.getFormatada());
        System.out.println(this.rg);        
    }
    public double calculaganhoAnual () {
        return this.salario * 12.0;
    } 
    public double mostraSalario(){
        return this.salario;
    }
    public void novoSalario(double novosal){
        this.salario = novosal;
    }
}

class Empresa{
    private String nome;
    private String cnpj;
    int tamanho;
    Funcionario[] funcionarios;
    int departamentos;
    String porte;
    int x = 0;    
    int i;

    void adiciona (Funcionario f){
        this.funcionarios[this.x] = f;
        this.x++;
    }

    public Empresa (int tamanho){
        this.tamanho = tamanho;
        funcionarios = this.Funcionario[this.tamanho];
    }

    public String getCnpj () {
        return this.cnpj;
    } 

    public String getNome () {
        return this.nome;
    } 

    void mostraFuncionarios () {
        for (i = 0; i < this.funcionarios.length; i++){
            System.out.println("Funcionario: " + i);
            System.out.println(this.funcionarios[i].nome);
            System.out.println(this.funcionarios[i].mostraSalario());
            System.out.println(this.funcionarios[i].data.getFormatada());
            System.out.println(this.funcionarios[i].rg);            

            }
        }
}

class TestaEmpresa{
    public static void main(String[] args){
        Empresa empresa = new Empresa(10);
        Funcionario larissa = new Funcionario("Larissa Varjao");
        larissa.departamento = "Assurance";
        larissa.novoSalario(20000.00);
        larissa.data = new Data();
        larissa.data.numeros (1, 6, 2015);
        larissa.rg = "12345678";
        empresa.adiciona(larissa);

        Funcionario felipe = new Funcionario("Felipe F.");
        felipe.novoSalario(2000);
        empresa.adiciona(felipe);
        felipe.data = new Data();
        felipe.data.numeros (1, 7, 2016);

    }
}
6 respostas

void adiciona (Funcionario f){ this.funcionarios[this.x] = f; this.x++; }

no seu método adiciona acredito que está o erro. Olha bem como ta o meu e tenta comparar com o seu. class Empresa{ String nome; String cnpj; Funcionario[] empregados; int livre = 0;

void adiciona(Funcionario f){ this.empregados[this.livre] = f; livre++; } }

Ele está dando um erro com relação a essa parte aqui:

public Empresa (int tamanho){ this.tamanho = tamanho; funcionarios = Funcionario[this.tamanho]; }

solução!

Você quer definir o tamanho da sua array Funcionario[] através do construtor, certo? Se você não for utilizar a variável tamanho pra mais nada, você pode fazer simplesmente:

public Empresa(int tamanho){
       this, funcionarios = new Funcionario[tamanho];
    }

é precisos instanciar uma nova array quando você cria a classe.

Dessa forma vai compilar.

Pequena correção:

public Empresa(int tamanho){
       this.funcionarios = new Funcionario[tamanho];
    }

Obrigado, Bruno. Essa era exatamente a minha dúvida.

public Empresa(int tamanho){
        this.empregados = new Funcionario[tamanho]; 
    }

Quando indico no construtor que terei um tamanho para Array, preciso declarar o mesmo quando instânciar o obj.