Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Erro ao compilar

Pessoal, Bom dia!

Estou tentando imprimir a data do funcionário, porém, ao compilar é mostrado o seguinte erro:

/tmp/java_ydXMEB/TestaFuncionario.java:16: error: cannot find symbol f1.mostraData(); ^ symbol: method mostraData() location: variable f1 of type Funcionario 1 error

Segue o código do programa:

public class Funcionario{

String nome; String departamento;

double salario; String banco; String rg;

Data dataNascimento; //referencia a classe data

//método void recebeAumento(double aumento){

if(aumento > 0){

this.salario += aumento;

} }

//método double calculaGanhoAnual(){

return 12 * this.salario;

}

}

public class Data{

int dia; int mes; int ano;

void mostraData(int dia, int mes, int ano){ this.dia = dia; this.mes = mes; this.ano = ano;

}

}

public class TestaFuncionario{

public static void main(String[] args){

Funcionario f1 = new Funcionario();

f1.nome = "Hugo"; f1.salario = 100;

//criando data f1.dataNascimento = new Data();

f1.dataNascimento.mostraData(1, 8, 2010);

f1.mostraData();

}

}

Vocês podem me ajudar?

Obrigada!

1 resposta
solução!

Oi Jéssica, o que acontece é que na classe Data você criou um método chamado mostraData, mas que na verdade ele está recebendo o valor da data, e na hora de imprimir você está chamando o método mostraData da classe Funcionario, porém nessa classe não existe nenhum mostra data. Acredito que não seja exatamente essa a solução do exercício mas vou tentar adaptar o seu código para você entender mais ou menos o que deveria acontecer.

Primeiro eu alterei o nome do método mostraDatapara montaDatana classe Data:

public class Data {

    int dia;
    int mes;
    int ano;

    void montaData(int dia, int mes, int ano) {
        this.dia = dia;
        this.mes = mes;
        this.ano = ano;

    }
}

E na classe Funcionárioeu montei um método chamado mostraData:

public class Funcionario {

    String nome;
    String departamento;

    double salario;
    String banco;
    String rg;

    Data dataNascimento; // referencia a classe data

    // método
    void recebeAumento(double aumento) {

        if (aumento > 0) {

            this.salario += aumento;

        }
    }

    // método
    double calculaGanhoAnual() {

        return 12 * this.salario;

    }

    public void mostraData() {

        System.out.println(this.dataNascimento.dia + "/" + this.dataNascimento.mes + "/" + this.dataNascimento.ano); 
    }

}

Por fim eu adequei o seu TestaFuncionario para chamar o método montaData:

public class TestaFuncionario {

    public static void main(String[] args) {

        Funcionario f1 = new Funcionario();

        f1.nome = "Hugo";
        f1.salario = 100;

        // criando data 
        f1.dataNascimento = new Data();

        f1.dataNascimento.montaData(1, 8, 2010);

        f1.mostraData();
    }
}

Dessa forma o código rodou, lembrando, eu fiz uma pequena adaptação para você ver como funciona mais ou menos, acredito que o mostraDataseja bem parecido com esse no exercício, agora acho que fica mais fácil de você testar.

Mas só para complementar, o seu erro acontecia pois você estava chamando f1.mostraData() , ou seja, você estava chamando o método mostraData()da classe Funcionárioe esse método não existia, aí vinha o seu erro.

Espero ter ajudado, qualquer dúvida pode postar aqui.