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

Dúvida no Ex. 6 da Aula 3 - Começando com Orientação a objetos

Na linha 57 aparece o erro: cannot find symbol

f1.dataDeEntrada.preencheData(1, 7,2010);

Afirmando não reconhecer o ponto ( . )

Devido ao fato:

symbol: method preencheData(int, int, int); location: dataDeEntrada of type Data

Eu tentei alterar o tipo Data pra int para verificar se o problema se resolvia mas aí aparecem mais erros ainda.

Segue meu código:

class Data { int dia; int mes; int ano;

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

}

}

class Funcionaria {

String nome; String departamento; double salario; Data dataDeEntrada; String rg;

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

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

void mostra() { System.out.println("Nome:" + this.nome); System.out.println("Departamento:"+this.departamento); System.out.println("Salario:"+this.salario); System.out.println("dataDeEntrada:"+this.dataDeEntrada); System.out.println("RG"+this.rg); System.out.println("Ganho Anual"+this.calculaGanhoAnual());

}

}

class TestaFuncionaria{

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

f1.nome = "Marcia"; f1.departamento = "administrativo"; f1.salario = 1500; f1.rg = "12335"; f1.recebeAumento (250);

//adicionando a data como tipo f1.dataDeEntrada = new Data(); f1.dataDeEntrada.preencheData(1, 7,2010); f1.mostra();

System.out.println("Salário atual:" + f1.salario); System.out.println("Ganho Anual:" + f1.calculaGanhoAnual());

Funcionaria f2=f1;

if (f1 == f2) { System.out.println("iguais"); } else { System.out.println("diferentes"); }

}

}

3 respostas
solução!

Thiago, tudo bem?Geralmente este erro indica que você chamou um metodo com o nome incorreto, verifique: Sua classe Data, tem um metodo preenche(), mas no objeto funcionário, no atributo dataDeEntrada você chama o metodo preencheData. Mas na classe Data não existe este metodo, entendeu?

Modifique o preencheData() para somente preenche() com os parametros corretamente. Funciona? Fez sentido minha explicação?

Espero ter ajudado! Bons estudos!

Opa Wanderson obrigado!

A única coisa agora é que a data mesmo eu alterando ela no prompt sai, invariavelmente, como:

dataDeEntrada: Data@52e922

mesmo que eu altere a data no código.

Oi Thiago! observando o trecho do seu código, que está dentro do método mostra() na classe funcionária:

"System.out.println("dataDeEntrada:"+this.dataDeEntrada);"

Você está solicitando que seja exibido o objeto data, por isso foi exibido "Data@52e922", tente alterar para:

"System.out.println("dataDeEntrada:"+this.dataDeEntrada.dia+"/"+this.dataDeEntrada.mes+"/"+this.dataDeEntrada.ano);"

dataDeEntrada é um objeto, no caso this.dataDeEntrada.dia é o atributo dia do objeto dataDeEntrada e assim sucessivamente.

Abraços e bons estudos!