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

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

Boa tarde pessoal,

Fiz, aparentemente, tudo correto conforme o exercício pediu, mas a classe TestaEmpresa simplesmente não roda...

public class Funcionario {

    String nome;
    String departamento;
    double salario;
    Integer ano;
    Integer mes;
    Integer dia;
    String RG;
    double valor;
    double calculaGanhoAnual(){
        return this.salario * 12;

    }

    public class Empresa{
        String nome;
        String cnpj;
        int livre = 0;
        Funcionario[] empregados;

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




    void recebeAumento(double valor){
        this.salario += valor;
    }
    void mostra(){
        System.out.println("Nome: " + this.nome);
        System.out.println("Departamento: " + this.departamento);
        System.out.println("Salário: " + this.salario);
        System.out.println("Data de Entrada: " + this.dia + "/" + this.mes + "/" + this.ano);
        System.out.println("RG: " + this.RG);
    }

}


//Nova Classe Empresa
public class TestaEmpresa {

    public static void main (String[] args) {
            Empresa empresa = new Empresa();
            empresa.empregados = new Funcionario[10];

            Funcionario f1 = new Funcionario();
            f1.salario = 1000;
            empresa.adiciona(f1);

            Funcionario f2 = new Funcionario();
            f1.salario = 1700;
            empresa.adiciona(f2);

            empresa.empregados[0].mostra();
            empresa.empregados[1].mostra();



    }

Ainda sim eu recebo esse erro:

Exception in thread "main" java.lang.Error: Unresolved compilation problem: No enclosing instance of type Funcionario is accessible. Must qualify the allocation with an enclosing instance of type Funcionario (e.g. x.new A() where x is an instance of Funcionario).

at aulapoo.TestaEmpresa.main(TestaEmpresa.java:8)

Alguma sugestão?

3 respostas

Ele não está conseguindo instanciar a classe funcionário devido algum erro de compilação. Peguei seu código e consegui rodar aqui, mas os métodos recebeAumento e mostra deixei na Classe Funcionário (seguindo sua lógica).

public class Funcionario {

    String nome;
    String departamento;
    double salario;
    Integer ano;
    Integer mes;
    Integer dia;
    String RG;
    double valor;

    double calculaGanhoAnual() {
        return this.salario * 12;
    }

    void recebeAumento(double valor) {
        this.salario += valor;
    }

    void mostra() {
        System.out.println("Nome: " + this.nome);
        System.out.println("Departamento: " + this.departamento);
        System.out.println("Salário: " + this.salario);
        System.out.println("Data de Entrada: " + this.dia + "/" + this.mes + "/" + this.ano);
        System.out.println("RG: " + this.RG);
    }

}

Obrigado pela resposta, Thiago, mas mesmo que os métodos fiquem fora da classe Funcionario, era pra funcionar normalmente... Tentei compilar os arquivos e o cmd acusa que não existe o meu package...

solução!

Thiago, acabei de criar uma nova classe separada chamada Empresa e rodou o programa! Muito obrigado pela ajuda!