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

Exercicio 6 Aula 3 Java I , minha Dúvida esta no seguinte, consigo compilar, e executar o TesteFuncionario4, porém a data é o problema , não aparece corretamente., no aguardo de uma ajuda !

class Funcionario {
    String nome;
    int numeroDoFuncionario;
    String departamento;
    double salario;
    Data dataDeEntrada;
    String rg;
    double ganhoAnual;

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

    void calculaGanhoAnual (double valor) {
         this.ganhoAnual = salario * valor;
    }

    void mostra () {
        System.out.println ("Nome : " + this.nome);
        System.out.println ("Numero Do Funcionario : " + this.numeroDoFuncionario);
        System.out.println ("Departamento : " + this.departamento);
        System.out.println ("Salario : " + this.salario);
        System.out.println ("Data de Entrada : " + this.dataDeEntrada);
        System.out.println ("Documento de Identidade RG : " + this.rg);
        System.out.println ("Ganho Anual : " + this.ganhoAnual);
        System.out.println (" -------------------------------------------------------");
    }

}

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;

    }


}

class TesteFuncionario4 {
    public static void main (String[] args) {
        Funcionario f1 = new Funcionario();
        f1.nome = "Joao";
        f1.numeroDoFuncionario = 1;
        f1.departamento = "administrativo";
        f1.salario = 10000;
        f1.rg = "0123456789";
        f1.recebeAumento (50);
        f1.calculaGanhoAnual (12);

        f1.dataDeEntrada = new Data();
        f1.dataDeEntrada.preencheData (1, 1, 2000);
        f1.mostra();

    }
}
2 respostas
solução!

Olá Luis,

Na sua classe Funcionario, o atributo dataDeEntrada é do tipo Data logo ele não é um dos tipos primitivos do Java. Lembre-se que qualquer variável que tenha um tipo primitivo guarda um valor, caso contrário, ela guarda uma referência para um objeto na memória.

O que acontece quando você pede para imprimir:

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

é que o Java vai imprimir a referência para o objeto Data que está guardado no atributo dataDeEntrada.

Nesse caso, você possui algumas alternativas para imprimir a Data, uma delas seria criar um método na classe Data para imprimir a data formatada. Por exemplo:

class Data {
  public void imprime() {
    System.out.println(this.dia+"/"+this.mes+"/"+this.ano);
  }
}

Aí quando você precisar imprimir a data basta substituir a linha:

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

por

this.dataDeEntrada.imprime();
// acabei colocando outro código , pois este não funcionou, fiz como informou mais não rolou, acabei utilizando no lugar deste: 

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

// por este...

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

// este acima acabou rolando.
// muito obrigado pela ajuda e disposição ,espero poder sempre contar com a ajuda, grande abraço!