2
respostas

Não consigo imprimir a data separada

Eu acho que não compreendi direito o que a aula esta exigindo, mas não estou conseguindo imprimir a data (dia, mês e ano) separadamente.

package Funcionario;

public class Funcionario {

    public static void main(String[] args) {





        Funcionario f1;
        f1 = new Funcionario();

        f1.nome = "Eduardo";
        f1.RG = "15.2867.934-84";
        f1.departamento = "RH";
        f1.salario = 3400.00;
        f1.data = 10/1/2012;
        f1.dia = 10; 
        f1.mês = 1;
        f1.ano = 2012;


        Funcionario f2;
    f2 = new Funcionario();

        f2.nome = "Marcelo";
        f2.RG = "10.987.654-32";
        f2.departamento = "RH";
        f2.salario = 3400.00;
        f2.data = 10/01/2012;



        if (f1 == f2) {
            System.out.println("Iguais");

        } else {
            System.out.println("Diferentes");

        }

        f2.mostra();
        f1.mostra();


        }


    String nome,RG,departamento;
    double salario;
    int data,dia,mês,ano;
    public Object mostra;
    private Object dataDeEntrada;




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

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

    }

    void mostra() {

        System.out.println("");

        System.out.println("Nome: " + this.nome );
        System.out.println("RG: " + this.RG);
        System.out.println("Departamento: " + this.departamento);
        System.out.println("Salario: " + this.salario);
        System.out.println("Data: " + this.data);
        System.out.println("Dia: " + this.dataDeEntrada.dia);
        System.out.println("Mês: " + this.dataDeEntrada.mes);
        System.out.println("Ano: " + this.dataDeEntrada.ano);
    }
}


class data {int dia, mês, ano;

void preencheData (int dia, int mês, int ano) {this.dia=dia; this.mês=mês; this.ano=ano;}


}

class testaFuncionario { public static void main(String[] args) {Funcionario f1=new Funcionario();
f1.nome="Eduardo";
f1.salario=3400.00;

f1.data = 10/01/2012;

f1.mostra();


}
{

Funcionario f2;
f2 = new Funcionario();

f2.nome="Marcelo";
f2.salario=3400.00;

f2.data= 10/01/2012;

int dia = 10, mês = 01, ano = 2012;
((data) f2.mostra).preencheData(dia, mês, ano);

}
}
2 respostas

Olá, Cristiano!

Quando você faz:

f1.data = 10 / 01 / 2012;

você não está colocando a data "dez de janeiro de 2012" no Funcionario f1, mas o resultado da divisão de 10 por 1 por 2012.

O Java não tem um tipo primitivo para guardar datas.

Ou você usa um texto (String) ou, como no exercício 6, usa uma classe específica para guardar datas, a classe Data que tem um atributo int para o dia, outro para o mese outro para o ano.

Você criou a classe data. Até aí, OK!

class data {int dia, mês, ano;
   void preencheData (int dia, int mês, int ano) {
      this.dia=dia; 
      this.mês=mês; 
      this.ano=ano;
   }
}

Observação 1: o costume para nomes de classes é começar com letras maiúsculas! Então, a classe seria Data e não data.

Observação 2: evite colocar acento nos nomes de atributos. Deixe mes ao invés de mês.

Mas, na hora de associar à classe Funcionario, você colocou os atributos data, dia, mês e ano.

Além disso, você colocou o dataDeEntrada como Object.

class Funcionario {
    // outros atributos...
    int data, dia, mês, ano; //incorreto
    private Object dataDeEntrada; //incorreto
    // metodos...
}

Não precisa colocar cada um dos atributos, pois você já tem uma classe Data (vou colocar em maiúsculo aqui), que você acabou de criar.

class Funcionario {
    // outros atributos...
    Data dataDeEntrada;
    // metodos...
}

E como faz pra associar a data "dez de janeiro de 2012" ao Funcionario f1?

  • crie um objeto da classe Data com o new
  • chame o método preencheData para colocar valores para os atributos
  • associe esse o objeto Data com o funcionário f1
Data d = new Data();
d.preencheData(10, 1, 2012);
f1.dataDeEntrada  = d;

Perfeito!!