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

Não consigo imprimir a data

Boa tarde,

Sou iniciante em java e estou com dúvida para imprimir a Data conforme código abaixo:

class Funcionario{
     private String nome;
     private String departamento;
     private Data dtEntrada;
     private double salario;

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

     public String getNome(){
          return this.nome;
     }
      public String getDepartamento(){
          return this.departamento;
     }
     public Data getData(){
          return this.dtEntrada;
     }
     public double getSalario(){
          return this.salario;
     }

     public void setNome(String nome){
          this.nome = nome;
     }
      public void setDepartamento(String departamento){
          this.departamento = departamento;
     }
     public void setData(Data dtEntrada){
          this.dtEntrada = dtEntrada;
     }
     public void setSalario(double salario){
          this.salario = salario;
     }
}

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

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

class Empresa{
     String razaoSocial;
     String cnpj;
     Funcionario[] colaborador;

     int posicaoNoArrayFuncionarios = 0;

     void adicionaFuncionario(Funcionario f){
          this.colaborador[posicaoNoArrayFuncionarios] = f;
          posicaoNoArrayFuncionarios++;
     }

     void mostraDados(){
          for(int i = 0; i < this.posicaoNoArrayFuncionarios; i++){
               System.out.println("\n");
               System.out.println("Posição no array é: " + i);
               System.out.println("Nome: " + this.colaborador[i].getNome());
               System.out.println("Data de Entrada: " + this.colaborador[i].getData());
               System.out.println("Departamento: " + this.colaborador[i].getDepartamento());
               System.out.println("Salario: " + this.colaborador[i].getSalario());
               System.out.println("\n");
               System.out.println("*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*");    
          }
     }  
}

class Programa{
     public static void main(String[] args){

          Funcionario f1 = new Funcionario();
          f1.setNome("Bruno Lima");
          f1.setDepartamento("Informática");
          f1.setSalario(1500.0);
          Data d = new Data();
          d.dia = 8;
          d.mes = 8;
          d.ano = 2011;
          d.formataData();
          f1.setData(d);
          System.out.print(f1.getData());

          Funcionario f2 = new Funcionario();
          f2.setNome("Flavio Pedro");
          f2.setDepartamento("Informática");
          f2.setSalario(3500.0);
          f2.aumentoDeSalario(200);

          Empresa empresa = new Empresa();
          empresa.colaborador = new Funcionario[10];
          empresa.adicionaFuncionario(f1);
          empresa.adicionaFuncionario(f2);
          //empresa.mostraDados();
     }
}
5 respostas
solução!

Bruno

no seu syso faça isso

System.out.print(f1.getData().formataData());

Obrigado Jefferson!!

Sua solução também funcionou.

Um pouco antes também consegui alterando o tipo de retorno do método getData para String ;)

Bruno

se o seu atributo dtEntrada é do tipo Data, o getData (deveria ser getDtEntrada) tem que retornar Data. Você não pode retornar String. Seu programa é pequeno e nesse caso funciona mas imagina um sistema grande, em algum caso onde seja realmente necessário voltar a informação do tipo Data ??. Você pode quebrar o sistema.

Hum entendi Jefferson,

Neste caso, como eu faria para conseguir imprimir a data no formato correto?

Veja que alterei o método getData para o tipo Data:

public Data getData(){
          return this.dtEntrada.formataData();
     }

Tenho uma função dentro da classe Empresa, que lista as informações do funcionário:

void mostraDados(){
          for(int i = 0; i < this.posicaoNoArrayFuncionarios; i++){
               System.out.println("\n");
               System.out.println("Posição no array é: " + i);
               System.out.println("Nome: " + this.colaborador[i].getNome());
               System.out.println("Data de Entrada: " + this.colaborador[i].getData());
               System.out.println("Departamento: " + this.colaborador[i].getDepartamento());
               System.out.println("Salario: " + this.colaborador[i].getSalario());
               System.out.println("\n");
               System.out.println("*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*");    
          }
     }

E por último, a classe programa:

class Programa{
     public static void main(String[] args){

          Funcionario f1 = new Funcionario();
          f1.setNome("Bruno Lima");
          f1.setDepartamento("Informática");
          f1.setSalario(1500.0);
          Data d = new Data();
          d.dia = 8;
          d.mes = 8;
          d.ano = 2011;
          d.formataData();
          f1.setData(d);

          Funcionario f2 = new Funcionario();
          f2.setNome("Flavio Pedro");
          f2.setDepartamento("Informática");
          f2.setSalario(3500.0);
          f2.aumentoDeSalario(200);
          Data d2 = new Data();
          d2.dia = 18;
          d2.mes = 06;
          d2.ano = 2016;
          d2.formataData();
          f2.setData(d2);

          Empresa empresa = new Empresa();
          empresa.colaborador = new Funcionario[10];
          empresa.adicionaFuncionario(f1);
          empresa.adicionaFuncionario(f2);
          empresa.mostraDados();
     }
}

Consegui da forma que havia me orientado.

System.out.println("Data de Entrada: " + this.colaborador[i].getData().formataData());

Muito obrigado mais uma vez Jefferson.