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

Classe Data não retorna Data Formatada pelo método getDataEntrada.

Para aparecer a data de admissão do funcionário na tela, utilizei a classe "data" com o método "getDataFormatada". O código roda bem se eu não utilizar a classe da de entrada, porém, se eu utilizo, o código não compila e aparece a seguinte mensagem de erro:

javac Funcionario.java Funcionario.java:26: error: incompatible types: String cannot be converted to Data return this.dataEntrada.getDataFormatada(); ^

Segue o código:

class Funcionario {

    //dados do funcionário

    private String nome;
    private double salario;
    private Data dataEntrada;


    //getters e setters dos atributos acima

    public String getNome() {
        return this.nome;
    }
    public void setNome(String nome) {
        this.nome = nome;
    }

    public double getSalario() {
        return this.salario;
    }
    public void setSalario(double salario) {
        this.salario = salario;
    }
    public Data getDataEntrada() {
        return this.dataEntrada.getDataFormatada();
    }
    public void setDataEntrada (Data preencheData) {
        this.dataEntrada = dataEntrada;
    }



    //método que aumenta salário
    public void recebeAumento(double valor) {
        this.salario += valor;
    }

    //método que calcula salário anual
    public 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;
    }

    String getDataFormatada() {
        return dia + "/" + mes + "/" + ano;
    }
}

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

        f1.setNome("Hugo");
        f1.setSalario(100);

        Data dataEntrada = new Data();
        dataEntrada.preencheData(2, 5, 2014);

        f1.setDataEntrada(dataEntrada);

        f1.recebeAumento(50);

        System.out.println(f1.getNome());
        System.out.println(f1.getSalario());
        System.out.println(f1.getDataEntrada());
    }
}
6 respostas

O problema ta aqui =>

public Data getDataEntrada() {
        return this.dataEntrada.getDataFormatada();
    }

O método getDataFormatada retorna uma String. Esse método, getDataEntrada, pelo seu código, deveria retornar String também.

Fiz o que você disse, troquei o Data por String e o código compilou, porém, ao executar o código, ainda não aparece a informação da data. A mensagem do prompt é a seguinte: Exception in thread "main" java.lang.NullPointerException at Funcionario.getDataEntrada(Funcionario.java:26) at TestaFuncionario.main(Funcionario.java:78)

solução!

Olá Natan Rocha, tudo bem?

Olhe esta parte de seu código:

   public void setDataEntrada (Data preencheData) {
        this.dataEntrada = dataEntrada;
    }

Percebeu o erro? troque "preencheEntrada" do parâmetro por dataEntrada que tudo irá funcionar.

Deve ficar assim:

   public void setDataEntrada (Data dataEntrada) {
        this.dataEntrada = dataEntrada;
    }

Espero ter ajudado.

Abraços

Exato Natan dessa vez é exatamente o que o colega citou acima ou você faz:

public void setDataEntrada (Data dataEntrada) {
        this.dataEntrada = dataEntrada;
    }

ou

  public void setDataEntrada (Data preencheData) {
        this.dataEntrada = preencheData;
    }

Obrigado colegas, o código funcionou perfeitamente após eu trocar o preencheData por dataEntrada no método setDataEntrada.

Abraços!

Obrigado Alberto! Sua resposta ajudou aqui!