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

Erro no código do exercício

Boa tarde, não estou conseguindo acertar esse código de jeito nenhum, será que alguém poderia me ajudar com esse exercício... Segue o código:

class Funcionario {

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

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

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

    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;    

        }
}


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

    }
}
class TestaFuncionario {

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



    f1.nome = "Alisson";
    f1.departamento = "Tecnologia da Informação";
    f1.salario = 700;
    f1.recebeAumento(250);
    f1.rg = "124353" ;

    f1.dataEntrada = new Data();
    f1.dataEntrada.preencheData(1, 7, 2009);

    f1.mostra();

        }
    }
6 respostas

Qual o erro? Alguma parte fica sublinhada? Não compila? Da alguma exception? Sai algum resultado inesperado?

Aparece "incompatible types : Data cannot be converted to funcionario.Data f1.dataEntrada = new Data();"

solução!

Alisson eu teste e fiz assim através do eclipse eu instanciei a data na classe onde ela foi criada no funcionário..

public class Funcionario { String Nome,RG; Data dataEntrada = new Data(); float Salario;

Assim não foi preciso instanciar no main o codigo ficou assim.. f1.dataEntrada.preencheData(4,12, 2014);

-------///-------------------------------------///----------

public class teste {

String nome; String departamento; double salario; String rg; Data dataEntrada=new Data();

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

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

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;

} }

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

} }

class TestaFuncionario {

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

f1.nome = "Alisson"; f1.departamento = "Tecnologia da Informação"; f1.salario = 700; f1.recebeAumento(250); f1.rg = "124353" ;

f1.dataEntrada.preencheData(1, 7, 2009);

f1.mostra();

} }

Ah então era esse o problemaa, no próprio código da resposta do exercício estava instanciando no main por isso não consegui resolver, muito obrigado.. Só mais uma pergunta nesse caso como ficaria o System.out para mostrar a data que vou inserir no meu funcionário ?? Se puder me ajudar agradeço !!

Correto Alisson;

Assim voce pode criar dentro da class Data o metodo String getFormatada() assim você pode juntar as variareis para montar a data.

Já no mostra você vai declarar o

System.out.println("Data Admissao: "+this.dataEntrada.getFormatada() );

Fica mais ou menos assim:

public 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() { String data = this.dia+"/"+this.mes+"/"+this.ano;

return data; } }

------//--------------------------//-----------------

void mostra() { System.out.println("Nome:"+ this.Nome); System.out.println("Rg: "+this.RG); System.out.println("Salario: "+Salario); System.out.println("Departamento: "+ this.Salario ); System.out.println("Data Admissao: "+this.dataEntrada.getFormatada() ); }

}

Certo?

Show de Bola Eduardo, obrigado por sanar esta dúvida do Alisson, pois era a mesma que a minha !!