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

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

Pessoal, preciso de ajuda no código abaixo. Corrijo os erros que o compilador aponta porém segue acusando erro ao compilar. Obs: o Arquivo Java está denominado TestaEmpresa

'''

class Funcionario {

int departamento; double salario; Data dataDeEntrada; String nome; String RG; String cpf; String dataNascimento;

void mostra () { System.out.println("Departamento: " + this.departamento); System.out.println("Nome: " + this.nome);

}

double RecebeAumento(double aumento) { return this.salario += aumento; }

double CalculaGanhoAnual() { return this.salario * 12; } class Empresa { String nome; String cnpj; Funcionario[] empregados; int livre = 0; void adiciona(Funcionario f) { this.empregados[this.livre] = f; this.livre++;

class TestaEmpresa { public void main(String[] args) { Empresa empresa = new Empresa(); empresa.empregados = new Funcionario[10]; Funcionario f1 = new Funcionario(); f1.nome = "Gabriel Amazonas"; f1.departamento = 1; Funcionario f2 = new Funcionario(); f2.nome = " Bill Gates"; f2.departamento = 2; Funcionario f3 = new Funcionario(); f3.nome = "Steve Jobs"; f3.departamento = 3;

empresa.adiciona(f1); empresa.adiciona(f2); empresa.adiciona(f3); empresa.empregados[0].mostra(); empresa.empregados[1].mostra();

} } } }

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 + "."; } }

}'''

6 respostas

class Funcionario {


        int departamento;
        double salario;
        Data dataDeEntrada;
        String nome;
        String RG;
        String cpf;
        String dataNascimento;

        void mostra () {
        System.out.println("Departamento: " + this.departamento);
        System.out.println("Nome: " + this.nome);

        }

        double RecebeAumento(double aumento) {
            return this.salario += aumento;
         }

         double CalculaGanhoAnual() {
             return this.salario * 12;
         }
        class Empresa {
        String nome;
        String cnpj;
        Funcionario[] empregados;
        int livre = 0;
        void adiciona(Funcionario f) {
            this.empregados[this.livre] = f;
            this.livre++;

            class TestaEmpresa {
                public void main(String[] args) {
                    Empresa empresa = new Empresa();
                    empresa.empregados = new Funcionario[10];
                    Funcionario f1 = new Funcionario();
                    f1.nome = "Gabriel Amazonas";
                    f1.departamento = 1;
                    Funcionario f2 = new Funcionario();
                    f2.nome = " Bill Gates";
                    f2.departamento = 2;
                    Funcionario f3 = new Funcionario();
                    f3.nome = "Steve Jobs";
                    f3.departamento = 3;

                    empresa.adiciona(f1);
                    empresa.adiciona(f2);
                    empresa.adiciona(f3);
                    empresa.empregados[0].mostra();
                    empresa.empregados[1].mostra();

                }
        }
        }
        }

        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 + ".";
        }
        }


}

Poste qual o nome do erro que está acusando, assim fica mais fácil de identificar no código.

java TestaEmpresa Erro: o método main não foi encontrado na classe TestaEmpresa; defina o método main como: public static void main(String[] args) ou uma classe de aplicativo JavaFX deve expandir javafx.application.Application

E quando coloco o static no método main, acusa outro erro, dizendo que o método main não pode ser estático. Ou seja, forma um loop de erros.

solução!

O ideal nesse caso é você criar as classes separadas dessa forma fica mais fácil de testar. Como o seu main está em outra classe dentro da classe Funcionário, o compilador não consegue enxergar o seu main. Separe as classes mais ou menos desse jeito

class Funcionario {
    int departamento;
    double salario;
    Data dataDeEntrada;
    String nome;
    String RG;
    String cpf;
    String dataNascimento;

    void mostra() {
        System.out.println("Departamento: " + this.departamento);
        System.out.println("Nome: " + this.nome);

    }

    double RecebeAumento(double aumento) {
        return this.salario += aumento;
    }

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

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

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

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 TestaEmpresa {

    public static void main(String[] args) {
        Empresa empresa = new Empresa();
        empresa.empregados = new Funcionario[10];
        Funcionario f1 = new Funcionario();
        f1.nome = "Gabriel Amazonas";
        f1.departamento = 1;
        Funcionario f2 = new Funcionario();
        f2.nome = " Bill Gates";
        f2.departamento = 2;
        Funcionario f3 = new Funcionario();
        f3.nome = "Steve Jobs";
        f3.departamento = 3;

        empresa.adiciona(f1);
        empresa.adiciona(f2);
        empresa.adiciona(f3);
        empresa.empregados[0].mostra();
        empresa.empregados[1].mostra();

    }
}

agora tente compilar, depois execute apenas a classe de Teste

java TestaEmpresa

Resolvido, só não entendi o motivo pelo qual o java não enxerga o main! Sempre que estiver numa "Subclasse" o java não conseguirá exergá-lo? Abraços!

Ola nao sei se minha observação esta certa mas o correto seria criar todas as classe antes de chamar uma classe com o método main, pois as classes tem que estar criadas para que possam ser utilizada logo em seguida.

Abraço

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