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

Problemas com static, Ex. 2 - Aula 03.

Boa tarde pessoal, tudo bem?

Seguinte, estou com um problema que não consigo resolver.

Segue o programa abaixo

class Funcionario {
    String nome;
    String departamento;
    double salario;
    String entrada;
    String rg;

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

    double calculoGanhaAnual() {
        return this.salario += salario * 12;
    }

    class TestaFuncionario {

        public static void main (String[] args) {
            Funcionario f1 = new Funcionario();

            f1.nome = "Hugo";
            f1.salario = 1000;
            f1.recebeAumento(50);
            f1.rg = "123456789";
            f1.entrada = "20/03/1950";
            f1.departamento = "Vendas";


            System.out.println("Funcionario:" + f1.nome);
            System.out.println("RG:" + f1.rg);
            System.out.println("Entrou na empresa em:" + f1.entrada);
            System.out.println("Trabalha no departamento de:" + f1.departamento);
            System.out.println("salario atual:" + f1.salario);
            System.out.println("Salario Anual: " + f1.calculoGanhaAnual());
        }
    }
}

Com este código acima, quando vou compilar, apresenta o seguinte erro:

Funcionario.java:18: error: Illegal static declaration in inner class Funcionario.TestaFuncionario
                public static void main (String[] args) {
                                   ^
  modifier 'static' is only allowed in constant variable declarations
1 error

Agora, se eu removo o static, ele apresenta o seguinte erro:

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

Qual seria a solução para este problema?

Att,

3 respostas

Sua classe TestaFuncionario, está dentro da classe Funcionario, movimente a ultima chave para fechar a classe funcionário, antes de iniciar a próxima classe;

class Funcionario {
    String nome;
    String departamento;
    double salario;
    String entrada;
    String rg;

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

    double calculoGanhaAnual() {
        return this.salario += salario * 12;
    }
}
    class TestaFuncionario {

        public static void main (String[] args) {
            Funcionario f1 = new Funcionario();

            f1.nome = "Hugo";
            f1.salario = 1000;
            f1.recebeAumento(50);
            f1.rg = "123456789";
            f1.entrada = "20/03/1950";
            f1.departamento = "Vendas";


            System.out.println("Funcionario:" + f1.nome);
            System.out.println("RG:" + f1.rg);
            System.out.println("Entrou na empresa em:" + f1.entrada);
            System.out.println("Trabalha no departamento de:" + f1.departamento);
            System.out.println("salario atual:" + f1.salario);
            System.out.println("Salario Anual: " + f1.calculoGanhaAnual());
        }
    }
solução!

Cria a classe TestaFuncionario em outro arquivo. Você deixou o main dentro dela e não do Funcionario.

@Alberto Souza, Fiz o que disse e funcionou perfeitamente, muito obrigado!