Problemas com DateFormat

4 respostas
G

Olá, boa tarde amigos.
Sou iniciante em java. Estou gostando muito de aprender java. Mas estou apanhando muito em algumas questões, e uma delas é como eu faço para formatar uma data ao gosto do usuário em java.

Fiz um código, chamado "Agenda Eletrônica" que necessita que sejam informados alguns dados para sem gravados em uma array ...o código foi dividido em 4 classes: Contato, Compromisso, Agenda e Tarefa.
O que fiz até agora:

Classe Contato Não sei se estou fazendo a declaração da data de forma certa
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;

public class Contato {
    DateFormat dtNasc = new SimpleDateFormat("dd/MM/yyyy");
    Date data = new DateFormat(); //não sei se a declaração está certa
    
    String nome;
    String telefone;
    String celular;
    String email;
  }
Classe Compromisso
import java.util.Date;

public class Compromisso {
    Date data;
    String descricao;
}
Classe agenda O meu maior problema é aqui, onde não sei como fazer para incluir a data dentro do método incluirContato e incluirCompromisso de forma correta, de forma que ele receba qualquer dado informado pelo usuário
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;


public class Agenda {
    int maxCont = 100;
    int qtdCont = 0;
    int maxComp = 100;
    int qtdComp = 0;
    Contato[] ct = new Contato[maxCont];
    Compromisso[] cp = new Compromisso[maxComp];
    
   public boolean incluirContato(String nome, String email, String cel, String tel,DateFormat data){
       if (this.qtdCont < 100) {
           Contato ctt = new Contato();
           ctt.dtNasc(new Date(data.parse(data))));//fiz dessa forma
           ctt.nome = nome;
           ctt.email = email;
           ctt.celular = cel;
           ctt.telefone = tel;
           this.ct[qtdCont] = ctt;
           qtdCont++;
           
           return true;
       }else {
        return false;
       }   
   }
     public boolean incluirCompromisso(String descr){ 
         if (qtdComp < 100) {
             Compromisso cpp = new Compromisso(); //dentro desta classe também tem que ser declarado uma data, mas testei no outro método antes
             cpp.descricao = descr;
             this.cp[qtdComp] = cpp;
             qtdComp++;
             return true;
          } else {
             return false;
            }
     }
     
     public boolean excluirContato(String nome, String email, String cel, String tel){
       boolean excluido = false;
         for (int i = 0; i < qtdCont; i++) {
             if (excluido == false && this.ct[i].nome == nome) {
                 this.ct[i] = null;
                 qtdCont--;
                 excluido = true;
             }
        }
         return excluido;
     }
     
      //já aqui neste método eu tenho que excluir pela data que foi criada, está correto?
     public void excluirCompromisso(Date data){
     boolean deletar = false;
         for (int i = 0; i < qtdComp; i++) {
             if (deletar== false && this.cp[i].data==data) {
                 this.cp[i] = null;
                 qtdComp--;
                 deletar = true;
             }
         }
     }
     
     
     public void listarContatos(){
         for (int i = 0; i < this.qtdCont; i++) {
             System.out.println("nome: " + this.ct[i].nome +"\n"
                     +"Celular: " + ct[i].celular );
         }
         
    }  
      public void listarCompromisso () {
          for (int i = 0; i < this.qtdComp; i++) {
              System.out.println("Descrição: " + this.cp[i].descricao +"\n"
                      +"Data: "+ this.cp[i].data);
          }
     }

}
Classe Tarefa - onde está o método main
public class Tarefa_3 {

   public static void main(String[] args) throws ParseException {
       Agenda ag = new Agenda();
   
       //incluindo contatos  
       ag.incluirContato("gerbison", "[email removido]", "999959092", "37551156");
       ag.incluirContato("Suelen", "[email removido]", "98959694", "37554689");
       ag.incluirContato("Eloyse", "[email removido]", "89764689", "37554635");
       ag.incluirContato("José Silva", "[email removido]", "798946865", "35764689");
       ag.incluirContato("Carlos", "[email removido]", "989795949", "37774689");
       ag.incluirContato("Jessica Nunes", "[email removido]", "998979495", "38885679");
       ag.incluirContato("Edgar Marrone", "[email removido]", "998969798", "74689546");
       ag.incluirContato("Sergio Alcantara", "[email removido]", "98959495", "37468965");
       ag.incluirContato("Sabrina Sato", "[email removido]", "999999999", "37551138");
       ag.incluirContato("Gabriel Silva", "[email removido]", "997568946", "37568943");
       
       //incluindo compromissos
       ag.incluirCompromisso("Lavar carro");
       ag.incluirCompromisso("Fazer prova do concurso");
       ag.incluirCompromisso("Prova de LP I");
       ag.incluirCompromisso("Dar prova para meus alunos");
       ag.incluirCompromisso("Pagar fatura do cartão");
       
       //listando os contatos
       System.out.println("########## ---- CONTATOS ----##########");
       ag.listarContatos();
       
       //listando os compromissos
       System.out.println("########## ---- COMPROMISSOS ----##########");
       ag.listarCompromisso();
       
       //excluindo 2 contatos
       ag.excluirContato("Gabriel Silva", "[email removido]", "997568946", "37568943");
       ag.excluirContato("Sabrina Sato", "[email removido]", "999999999", "37551138");
       
       //listando contatos
       ag.listarContatos();
       
       //excluindo 1 comprimosso
       ag.excluirCompromisso(null);
       
      //inserir um comprimisso
       ag.incluirCompromisso("Fazer compras");
       
       //listando os compromissos
       ag.listarCompromisso();
    }
    
}

*Os dados são fictícios.

Se alguém puder me ajudar...fiquei na frente deste código por uns 3 dias sem conseguir nada nesta parte... Todos os outros exemplos que vi foram para gerar data atual, ou aleatória.

4 Respostas

ttelsen

Se eu entendi direito, o problema é na hora de apresentar pro usuário.
Então vc terá que usar a classe SimpleDateFormat para mostrar a data no formato que queres.

http://www.guj.com.br/articles/8

G

Se eu entendi direito, o problema é na hora de apresentar pro usuário.
Então vc terá que usar a classe SimpleDateFormat para mostrar a data no formato que queres.

http://www.guj.com.br/articles/8

Sim e não.
O problema é como vou fazer o método incluirContato e colocar, junto as outras variáveis, a data para que o usuário possa estar informando ela
juntamente com as outras. Como mostrado no método main. Eu não sei como colocar ela lá dentro do método.
As variáveis são públicas…
Elas eu coloco assim:

ctt.nome = nome; ctt.email = email; ctt.celular = cel; ctt.telefone = tel;
E a data, como faço?
Se a data foi criada de maneira certa na classe Contato, como eu teria que informá-la dentro do método incluirContato? Lembrando que seria qualquer data informada pelo usuário.
Sem falar na classe incluirCompromisso que também teriam datas variadas.

Acho que agora consegui me explicar… :smiley:

igor_ks

ao inves de passar um DateFormat, vc passa um java.util.Date
depois, na hora de mostrar, vc formata (com o DateFormat), da forma que quiser dd/MM/yyyy por exemplo.

Detalhe: use encapsulamento, não acesse direto os atributos da classe

G
ao inves de passar um DateFormat, vc passa um java.util.Date depois, na hora de mostrar, vc formata (com o DateFormat), da forma que quiser dd/MM/yyyy por exemplo.

Detalhe: use encapsulamento, não acesse direto os atributos da classe

Obrigado igor_ks... eu dei uma melhorada no código, deem uma olhada como ficou para ver se está certo:
public boolean incluirContato(String nome, String email, String cel, String tel, String dtString) throws ParseException {
        if (this.qtdCont < 100) {
            Contato ctt = new Contato();
            DateFormat df = new SimpleDateFormat("dd/MM/yyyy");
            ctt.dtNasc = df.parse(dtString);
            ctt.nome = nome;
            ctt.email = email;
            ctt.celular = cel;
            ctt.telefone = tel;
            this.ct[qtdCont] = ctt;
            qtdCont++;

            return true;
        } else {
            return false;
        }
    }

Um problema bobo agora, é fazer com que seja excluído o último contato da array...

Sou iniciante galera...tenham paciência...rsrsr :-D

Criado 30 de março de 2014
Ultima resposta 1 de abr. de 2014
Respostas 4
Participantes 3