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

Não consigo mostrar a data corretamente, onde estou errando?

class Funcionario{
    String nome;
    String departamento;
    double salario;
    Data data = new Data();//quando chamarem um new Funcionario, havera uma new Data para ele
    String rg;

    void recebeAumento(double aumento){

        this.salario += aumento;
    }

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

    void mostra(){
        System.out.println("Nome: " + this.nome + "\nSalario: R$ " + this.salario + "\nDepartamento: " + this.departamento + "\nData: " + this.data + "\nRg: " + this.rg);
        System.out.println("Ganho anual: R$ " + this.calculaGanhoAnual());
    }

}

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

class TestaFuncionario{

    public static void main(String[] args){

        Funcionario f = new Funcionario();

        f.nome = "Mariana";
        f.departamento = "TI";
        f.salario = 1200.00;
        f.data.dia = 12;
        f.data.mes = 01;
        f.data.ano = 2017;
        f.rg = "123456789";
        f.recebeAumento(200.00);

        f.mostra();

    }
}
2 respostas
solução!

Olá Josemar! Do jeito que está o seu código ele imprime na tela a referência em memória do objeto Data que você criou na classe Funcionário. Para imprimir os atributos do objeto no formato que você deseja é preciso criar um método para isto. Coloque o método abaixo na sua classe Data:

 String dataFormatada(){
       return this.dia + "/" + this.mes + "/" + this.ano;
   }

E agora, na classe Funcionário altere a referência para a data no método mostra(). Troque this.data por this.data.dataFormatada().

Testa aí e veja se funciona.

Abraços e sucesso nos estudos!

public class Principal {

    public static void main(String[] args) {
        Funcionario f1 = new Funcionario();
        f1.nome = "Ligia";
        f1.rg = "1.234.567";
        f1.salario = 1500.0;
        f1.detapartamento = "TI";
        f1.data.dia = 01;
        f1.data.mes = 04;
        f1.data.ano = 2017;
        f1.recebeAumento(50.0);
        f1.mostra();


        Funcionario f2 = new Funcionario();
        f2.nome = "Ligia";

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

    }

}
public class Funcionario {
    String nome;
    String detapartamento;
    double salario;
    String rg;
    Data data = new Data();

    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.detapartamento);
        System.out.println("RG: " + this.rg);
        System.out.println("Salário: " + this.salario);
        System.out.println("Ganho anual: " + this.calculaGanhoAnual());
        System.out.println("Data: " + this.data.formataData());
    }

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


    String formataData(){
        return this.dia + "/" + this.mes + "/" + this.ano;
    }
}

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software