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

getdataFormata da erro

O meu programa apresenta vários erros e dentre o deles está o do getdataFormatada. Não estou conseguindo resolver o problema.

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


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

    void calculaGanhoAnual(double anual) {
        anual=salario*12;
    }
    void mostra(){
        System.out.println("Nome: " + this.nome);
        System.out.println("RG: " + this.rg);
        System.out.println("departamento: " + this.departamento);
        System.out.println("Data de Entrada: " + this.dataDeEntrada.getdataFormatada);
        System.out.println("Salario: R$" + this.salario);
        System.out.println("Ganho anual: R$" + this.calculaGanhoAnual());


    }
}

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 getdataFormatada() {

        return this.dia+"/"+this.mes+"/"+this.ano;

    }
}

O erro que dá é esse:

 javac funcionario.java
funcionario.java:21: error: cannot find symbol
                System.out.println("Data de Entrada: " + this.dataDeEntrada.getdataFormatada);

O que devo fazer?

8 respostas

bom dia Iovan, nessa linha faltou colocar os (), deverá ficar assim:

System.out.println("Data de Entrada: " + this.dataDeEntrada.getdataFormatada());
solução!

Boa tarde,

Eu rodei aqui, os erros são os seguintes:

  1. Ajuste o nome do método de formatação da data para: getDataFormatada (padrão camelCase, inicia em minúscula, e as próximas palavras iniciam em maiúscula).

  2. Ajuste a chamada do método na classe Funcionario para this.dataDeEntrada.getdataFormatada(), todo método tem que usar os parenteses para chamar.

  3. Ajuste seu método calculaGanhoAnual, não precisa receber parâmetro, e não é void, o retorno é o cálculo do salário vezes 12 meses, ficando:

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

Com isso sua classe Data e Funcionario estarão corretas e compilando sem problemas, se não tiver erro nenhum na sua classe de teste com o método main, vai funcionar.

Qualquer dúvida manda ai, abraços.

Boa tarde Emerson,

Modifiquei aqui com a sua ajuda a classe Funcionario, mas parece que o problema agora e com a classe de teste.

class TestaFuncionario {

    public static void main(String[] args) {

        Funcionario zed = new Funcionario();
        zed.nome = "Seu Ze";
        zed.salario = 1200.00;
        zed.rg = "7182617921";
        zed.departamento = "Aco";
        zed.dataDeEntrada(11,12,21);

        f.mostra();        
    }
}

ele da esse problema:

λ javac funcionario.java
funcionario.java:59: error: cannot find symbol
        zed.dataDeEntrada(11,12,21);
           ^
  symbol:   method dataDeEntrada(int,int,int)
  location: variable zed of type Funcionario
funcionario.java:61: error: cannot find symbol
        f.mostra();
        ^
  symbol:   variable f
  location: class TestaFuncionario
2 errors

A dataDeEntrada é um atributo de Funcionario que representa um objeto Data. Logo, primeiro você deve instanciar um objeto do tipo Data, atribuir o valor a ele, e ai sim setar no atributo dataDeEntrada este objeto, assim:

class TestaFuncionario {

    public static void main(String[] args) {

        Funcionario zed = new Funcionario();
        zed.nome = "Seu Ze";
        zed.salario = 1200.00;
        zed.rg = "7182617921";
        zed.departamento = "Aco";
        Data data = new Data();
        data.preencheData(18,4,2017)
        zed.dataDeEntrada(data );

        f.mostra();        
    }
}

Infelizmente a sua solução não funciona.

class TestaFuncionario {

    public static void main(String[] args) {

        Funcionario zed = new Funcionario();
        zed.nome = "Seu Ze";
        zed.salario = 1200;
        zed.rg = "7182617921";
        zed.departamento = "Aco";
           Data data = new Data();
        data.preencheData(18,4,2017);
        zed.dataDeEntrada(data);

        zed.mostra();        
    }
}
 javac funcionario.java
funcionario.java:62: error: cannot find symbol
        zed.dataDeEntrada(data);
           ^
  symbol:   method dataDeEntrada(Data)
  location: variable zed of type Funcionario
1 error

Vou estudar mais um pouco pra tentar solucionar isso. Obrigado.

Felizmente, é só você ler e entender a mensagem de erro:

error: cannot find symbol zed.dataDeEntrada(data);

symbol: method dataDeEntrada(Data) location: variable zed of type Funcionario

Isso significa que não foi encontrado o método dataDeEntrada(). Porque não existe mesmo esse método! dataDeEntrada é um atributo, logo é só você corrigir o tipo de atribuição:

class TestaFuncionario {

    public static void main(String[] args) {

        Funcionario zed = new Funcionario();
        zed.nome = "Seu Ze";
        zed.salario = 1200;
        zed.rg = "7182617921";
        zed.departamento = "Aco";
        Data data = new Data();
        data.preencheData(18,4,2017);
        zed.dataDeEntrada = data;

        zed.mostra();        
    }
}

Quando nós entramos aqui para ajudar, ainda mais durante o horário de trabalho, nem sempre tem como olhar tudo com a máxima atenção, é meio na correria.

Te recomendo continuar estudando sim, e também aprender a interpretar e ler os erros, é super importante e vai fazer você conseguir resolver muitos problemas básicos sozinho.

Abraços.

Tudo funcionando agora! Não havia fixado bem os conceitos e acabei me enrolando em coisas básicas. Obrigado Emerson pela paciência e ajuda.

Tranquilo, no começo é assim mesmo. Bola pra frente e bons estudos. Abraço.