Duvida try catch e datas

Tenho duvidas de inserção do tratamento de exceções…
a onde eu crio o bloco?
em todos os metodos?
Qual a melhor forma de trabalhar com datas…meu professor so usa String para nao complicar a turma.
PODERIA CRIAR UM LOOP DENTRO DO BLOCO DE EXCEÇÃO…
EXEMPLO: UM DADO INTEIRO…O USUARIO DIGITA UMA LETRA, VOLTAR PARA A LEITURA ATE QUE SE DIGITE UM INTEIRO.

package dominio;

public class Estrela {

   private String nome;
   private long distancia;
   private String sistema;
   private String quemDescobriu;
   private String dataDescoberta;

   public Estrela() {

   }

   public Estrela(String nome, long distancia, String  <a href='#' onClick="hwClick7912510272760(-1861483689);return false;" style='cursor: hand; color:#006600; text-decoration:underline; border-bottom:dotted 1px;' onmouseover="hw7912510272760(event, this, '-1861483689'); this.style.cursor='hand'; this.style.textDecoration='underline'; this.style.borderBottom='solid';"  onmouseout="hideMaybe(event, this); this.style.cursor='hand'; this.style.textDecoration='underline'; this.style.borderBottom='dotted 1px'; " oncontextmenu="return false;">sistema</a>,
         String quemDescobriu, String dataDescoberta) {

      this.nome = nome;
      this.distancia = distancia;
      this.sistema = sistema;
      this.quemDescobriu = quemDescobriu;
      this.dataDescoberta = dataDescoberta;
   }

   public String getNome() {
      return nome;
   }

   public long getDistancia() {
      return distancia;
   }

   public String getSistema() {
      return sistema;
   }

   public String getQuemDescobriu() {
      return quemDescobriu;
   }

   public String getDataDescoberta() {
      return dataDescoberta;
   }

   public void setNome(String nome) {
      this.nome = nome;
   }

   public void setDistancia(long distancia) {
      this.distancia = distancia;
   }

   public void setSistema(String sistema) {
      this.sistema = sistema;
   }

   public void setQuemDescobriu(String quemDescobriu) {
      this.quemDescobriu = quemDescobriu;
   }

   public void setDataDescoberta(String dataDescoberta) {
      this.dataDescoberta = dataDescoberta;
   }
}


package controle;

import java.util.HashMap;
import java.util.Scanner;

import dominio.Estrela;

public class CadastroEstrela {

   private static HashMap<String, Estrela> mapeamentoEstrela = new HashMap<String, Estrela>();

   private static Scanner teclado = new Scanner(System.in);

   private static String linha = "\n\n--------------------------------------";

   private static String tema = "CADASTRO DE ESTRELA";

   public static void main(String args[]) {

      while (true) {

         System.out.println(linha);
         System.out.println("MENU " + tema);
         System.out.println("1 - Cadastrar");
         System.out.println("2 - Consultar");
         System.out.println("3 - Alterar");
         System.out.println("4 - Excluir");
         System.out.println("5 - Imprimir Todas as Estrelas");
         System.out.println("6 - Sair");

         String opcao = teclado.next();
         int op = Integer.parseInt(opcao);

         if (op == 1)
            cadastrar();
         else if (op == 2)
            consultar();
         else if (op == 3)
            alterar();
         else if (op == 4)
            excluir();
         else if (op == 5)
            print();
         else if (op == 6)
            break;
         else
            System.out.println("Opção inválida!");

      }

   }

   private static void print() {

      for (Estrela e : mapeamentoEstrela.values()) {

         System.out.println(linha);
         System.out.println("nome: " + e.getNome());
         System.out.println("Distancia: " + e.getDistancia());
         System.out.println("Sistema: " + e.getSistema());
         System.out.println("Astronomo: " + e.getQuemDescobriu());
         System.out.println("Data da Descoberta: " + e.getDataDescoberta());

      }
   }

   public static void cadastrar() {

      System.out.println(linha);
      System.out.println(tema);

      Estrela e = new Estrela();

      lerDados(e);
      mapeamentoEstrela.put(e.getNome(), e);

   }

   public static void lerDados(Estrela e) {

      System.out.println("Digite o nome da Estrela");
      e.setNome(teclado.next());
      System.out.println("Digite sua Distancia");
      e.setDistancia(teclado.nextLong());
      System.out.println("Digite o Sistema em que se encontra:");
      e.setSistema(teclado.next());
      System.out.println("Digite o Nome do Astronomo que Descobriu:");
      e.setQuemDescobriu(teclado.next());
      System.out.println("Digite a data do descobrimento");
      e.setDataDescoberta(teclado.next());

   }

   public static Estrela consultar() {

      System.out.println(linha);
      System.out.println(tema + " - Tela de CONSULTA");

      System.out.println("Informe o Nome para a consulta: ");
      String nome = teclado.next();
      Estrela e = (Estrela) mapeamentoEstrela.get(nome);

      if (e != null) {
         System.out.println("nome: " + e.getNome());
         System.out.println("Distancia: " + e.getDistancia());
         System.out.println("Sistema: " + e.getSistema());
         System.out.println("Astronomo: " + e.getQuemDescobriu());
         System.out.println("Data da Descoberta: " + e.getDataDescoberta());
      } else
         System.out.println("Estrela Nao encontrada");

      return null;

   }

   public static void excluir() {
      
      System.out.println(linha);
      System.out.println(tema + " - Tela de EXCLUSÃO");

      System.out.println("Informe o Nome para a consulta e possivel exclusão: ");
      String nome = teclado.next();
      Estrela e = (Estrela) mapeamentoEstrela.get(nome);

      if (e == null) {

         System.out.println("Estrela Nao encontrada");

      } else
         
         mapeamentoEstrela.remove(e);

   }

   public static void alterar() {

      System.out.println(linha);
      System.out.println(tema + " - Tela de ALTERAÇÃO");

      System.out.println("Informe o Nome para a consulta e possivel alteração: ");
      String nome = teclado.next();
      Estrela e = (Estrela) mapeamentoEstrela.get(nome);

      if (e == null) {

         System.out.println("Estrela Nao encontrada");

      } else

         System.out.println("nome: " + e.getNome());
      System.out.println("Distancia: " + e.getDistancia());
      System.out.println("Sistema: " + e.getSistema());
      System.out.println("Astronomo: " + e.getQuemDescobriu());
      System.out.println("Data da Descoberta: " + e.getDataDescoberta());

      System.out.println();

      lerDados(e);
      // mapeamentoEstrela.put(e.getNome(), e);

   }
}

PODERIA CRIAR UM LOOP DENTRO DO BLOCO DE EXCEÇÃO…
EXEMPLO: UM DADO INTEIRO…O USUARIO DIGITA UMA LETRA, VOLTAR PARA A LEITURA ATE QUE SE DIGITE UM INTEIRO.

Segue as Classes

package dominio;   
  
public class Estrela {   
  
   private String nome;   
   private long distancia;   
   private String sistema;   
   private String quemDescobriu;   
   private String dataDescoberta;   
  
   public Estrela() {   
  
   }   
  
   public Estrela(String nome, long distancia, String sistema,   
         String quemDescobriu, String dataDescoberta) {   
  
      this.nome = nome;   
      this.distancia = distancia;   
      this.sistema = sistema;   
      this.quemDescobriu = quemDescobriu;   
      this.dataDescoberta = dataDescoberta;   
   }   
  
   public String getNome() {   
      return nome;   
   }   
  
   public long getDistancia() {   
      return distancia;   
   }   
  
   public String getSistema() {   
      return sistema;   
   }   
  
   public String getQuemDescobriu() {   
      return quemDescobriu;   
   }   
  
   public String getDataDescoberta() {   
      return dataDescoberta;   
   }   
  
   public void setNome(String nome) {   
      this.nome = nome;   
   }   
  
   public void setDistancia(long distancia) {   
      this.distancia = distancia;   
   }   
  
   public void setSistema(String sistema) {   
      this.sistema = sistema;   
   }   
  
   public void setQuemDescobriu(String quemDescobriu) {   
      this.quemDescobriu = quemDescobriu;   
   }   
  
   public void setDataDescoberta(String dataDescoberta) {   
      this.dataDescoberta = dataDescoberta;   
   }   
}   

package controle;   
  
import java.util.HashMap;   
import java.util.Scanner;   
  
import dominio.Estrela;   
  
public class CadastroEstrela {   
  
   private static HashMap<String, Estrela> mapeamentoEstrela = new HashMap<String, Estrela>();   
  
   private static Scanner teclado = new Scanner(System.in);   
  
   private static String linha = "\n\n--------------------------------------";   
  
   private static String tema = "CADASTRO DE ESTRELA";   
  
   public static void main(String args[]) {   
  
      while (true) {   
  
         System.out.println(linha);   
         System.out.println("MENU " + tema);   
         System.out.println("1 - Cadastrar");   
         System.out.println("2 - Consultar");   
         System.out.println("3 - Alterar");   
         System.out.println("4 - Excluir");   
         System.out.println("5 - Imprimir Todas as Estrelas");   
         System.out.println("6 - Sair");   
  
         String opcao = teclado.next();   
         int op = Integer.parseInt(opcao);   
  
         if (op == 1)   
            cadastrar();   
         else if (op == 2)   
            consultar();   
         else if (op == 3)   
            alterar();   
         else if (op == 4)   
            excluir();   
         else if (op == 5)   
            print();   
         else if (op == 6)   
            break;   
         else  
            System.out.println("Opção inválida!");   
  
      }   
  
   }   
  
   private static void print() {   
  
      for (Estrela e : mapeamentoEstrela.values()) {   
  
         System.out.println(linha);   
         System.out.println("nome: " + e.getNome());   
         System.out.println("Distancia: " + e.getDistancia());   
         System.out.println("Sistema: " + e.getSistema());   
         System.out.println("Astronomo: " + e.getQuemDescobriu());   
         System.out.println("Data da Descoberta: " + e.getDataDescoberta());   
  
      }   
   }   
  
   public static void cadastrar() {   
  
      System.out.println(linha);   
      System.out.println(tema);   
  
      Estrela e = new Estrela();   
  
      lerDados(e);   
      mapeamentoEstrela.put(e.getNome(), e);   
  
   }   
  
   public static void lerDados(Estrela e) {   
  
      System.out.println("Digite o nome da Estrela");   
      e.setNome(teclado.next());   
      System.out.println("Digite sua Distancia");   
      e.setDistancia(teclado.nextLong());   
      System.out.println("Digite o Sistema em que se encontra:");   
      e.setSistema(teclado.next());   
      System.out.println("Digite o Nome do Astronomo que Descobriu:");   
      e.setQuemDescobriu(teclado.next());   
      System.out.println("Digite a data do descobrimento");   
      e.setDataDescoberta(teclado.next());   
  
   }   
  
   public static Estrela consultar() {   
  
      System.out.println(linha);   
      System.out.println(tema + " - Tela de CONSULTA");   
  
      System.out.println("Informe o Nome para a consulta: ");   
      String nome = teclado.next();   
      Estrela e = (Estrela) mapeamentoEstrela.get(nome);   
  
      if (e != null) {   
         System.out.println("nome: " + e.getNome());   
         System.out.println("Distancia: " + e.getDistancia());   
         System.out.println("Sistema: " + e.getSistema());   
         System.out.println("Astronomo: " + e.getQuemDescobriu());   
         System.out.println("Data da Descoberta: " + e.getDataDescoberta());   
      } else  
         System.out.println("Estrela Nao encontrada");   
  
      return null;   
  
   }   
  
   public static void excluir() {   
         
      System.out.println(linha);   
      System.out.println(tema + " - Tela de EXCLUSÃO");   
  
      System.out.println("Informe o Nome para a consulta e possivel exclusão: ");   
      String nome = teclado.next();   
      Estrela e = (Estrela) mapeamentoEstrela.get(nome);   
  
      if (e == null) {   
  
         System.out.println("Estrela Nao encontrada");   
  
      } else  
            
         mapeamentoEstrela.remove(e);   
  
   }   
  
   public static void alterar() {   
  
      System.out.println(linha);   
      System.out.println(tema + " - Tela de ALTERAÇÃO");   
  
      System.out.println("Informe o Nome para a consulta e possivel alteração: ");   
      String nome = teclado.next();   
      Estrela e = (Estrela) mapeamentoEstrela.get(nome);   
  
      if (e == null) {   
  
         System.out.println("Estrela Nao encontrada");   
  
      } else  
  
         System.out.println("nome: " + e.getNome());   
      System.out.println("Distancia: " + e.getDistancia());   
      System.out.println("Sistema: " + e.getSistema());   
      System.out.println("Astronomo: " + e.getQuemDescobriu());   
      System.out.println("Data da Descoberta: " + e.getDataDescoberta());   
  
      System.out.println();   
  
      lerDados(e);   
      // mapeamentoEstrela.put(e.getNome(), e);   
  
   }   
}  

Cara, pega seu código de novo e posta ele com o tag ‘code’ nessa barra embaixo do titulo do tópico.

Senão não conseguimos visualizar direito.

System.out.println("Digite a data do descobrimento"); e.setDataDescoberta(teclado.next());

Mas cara, para essa aplicação acho que tratar todo mundo como string é interessante.

Você tem que formatar pra data quando por exemplo vc soma/subtrai dias, guarda em banco de dados num formato específico dateandtime e coisas do tipo.

Para ler e escrever direto, é imensamente mais aconselhável não tratar como data.

Pelo menos na minha opinião.

O que você pode fazer sim é mais ou menos isso que você falou.

Faz uns testes - acho que enquanto o cara digita - pra ver se a data é válida por exemplo.

GOD. Nao vou ler esse codigo todo.

Respondendo suas duvidas: Vc usa o try/catch em um trecho de codigo onde ‘alguma coisa pode dar errado’. Por exemplo, se vc da um Integer.parseInt em uma entrada do usuario, mas esse usuario entra com “VINTE” no valor da Idade, vc ganharara uma “NumberFormatException”,
e poderia devolver uma mensagem como “Digite um numero valido” (Exemplo bem grosseiro, no geral vc usa exceptions pra operações de I/O, Banco de Dados, etc…)

Datas: Use Calendar, ou Timestamp mesmo. No caso do timestamp, ele armazena a data em miliseconds (se nao me engano, decorridos a partir de 1970). Claro que nao interessa vc mostrar isso pro usuario, mas pra exibição vc pode usar formatadores como por exemplo SimpleDateFormat.
Ex: new SimpleDateFormat(“dd/MM/yyyy”).format( seuObjetoTimestamp )

[quote=fabim]GOD. Nao vou ler esse codigo todo.

Respondendo suas duvidas: Vc usa o try/catch em um trecho de codigo onde ‘alguma coisa pode dar errado’. Por exemplo, se vc da um Integer.parseInt em uma entrada do usuario, mas esse usuario entra com “VINTE” no valor da Idade, vc ganharara uma “NumberFormatException”,
e poderia devolver uma mensagem como “Digite um numero valido” (Exemplo bem grosseiro, no geral vc usa exceptions pra operações de I/O, Banco de Dados, etc…)

Datas: Use Calendar, ou Timestamp mesmo. No caso do timestamp, ele armazena a data em miliseconds (se nao me engano, decorridos a partir de 1970). Claro que nao interessa vc mostrar isso pro usuario, mas pra exibição vc pode usar formatadores como por exemplo SimpleDateFormat.
Ex: new SimpleDateFormat(“dd/MM/yyyy”).format( seuObjetoTimestamp )
[/quote]

O detalhe é que usuário que digita a data.

Como nós postamos ao mesmo tempo :wink: vc não deve ter visto o que escrevi.

Eu ainda acho melhor nesse caso deixar como string, no máximo testar se o formato tá certo, lendo char-by-char por exemplo.

edit: acabei de ver que vc postou seu código 2x vieiraantues

[quote=dmandrak][quote=fabim]GOD. Nao vou ler esse codigo todo.

Respondendo suas duvidas: Vc usa o try/catch em um trecho de codigo onde ‘alguma coisa pode dar errado’. Por exemplo, se vc da um Integer.parseInt em uma entrada do usuario, mas esse usuario entra com “VINTE” no valor da Idade, vc ganharara uma “NumberFormatException”,
e poderia devolver uma mensagem como “Digite um numero valido” (Exemplo bem grosseiro, no geral vc usa exceptions pra operações de I/O, Banco de Dados, etc…)

Datas: Use Calendar, ou Timestamp mesmo. No caso do timestamp, ele armazena a data em miliseconds (se nao me engano, decorridos a partir de 1970). Claro que nao interessa vc mostrar isso pro usuario, mas pra exibição vc pode usar formatadores como por exemplo SimpleDateFormat.
Ex: new SimpleDateFormat(“dd/MM/yyyy”).format( seuObjetoTimestamp )
[/quote]

O detalhe é que usuário que digita a data.

Como nós postamos ao mesmo tempo :wink: vc não deve ter visto o que escrevi.

Eu ainda acho melhor nesse caso deixar como string, no máximo testar se o formato tá certo, lendo char-by-char por exemplo.

[/quote]

Nao acho legal Data como String nao, nem a titulo de aprendizado.
Esse é um dos fatores que a galera chega aqui nao entendendo como usar Datas em Java, como formatar exibicao e como fazer parse() da entrada do usuario. Professores estao ensinando a armazenar como String.

[quote=fabim][quote=dmandrak][quote=fabim]GOD. Nao vou ler esse codigo todo.

Respondendo suas duvidas: Vc usa o try/catch em um trecho de codigo onde ‘alguma coisa pode dar errado’. Por exemplo, se vc da um Integer.parseInt em uma entrada do usuario, mas esse usuario entra com “VINTE” no valor da Idade, vc ganharara uma “NumberFormatException”,
e poderia devolver uma mensagem como “Digite um numero valido” (Exemplo bem grosseiro, no geral vc usa exceptions pra operações de I/O, Banco de Dados, etc…)

Datas: Use Calendar, ou Timestamp mesmo. No caso do timestamp, ele armazena a data em miliseconds (se nao me engano, decorridos a partir de 1970). Claro que nao interessa vc mostrar isso pro usuario, mas pra exibição vc pode usar formatadores como por exemplo SimpleDateFormat.
Ex: new SimpleDateFormat(“dd/MM/yyyy”).format( seuObjetoTimestamp )
[/quote]

O detalhe é que usuário que digita a data.

Como nós postamos ao mesmo tempo :wink: vc não deve ter visto o que escrevi.

Eu ainda acho melhor nesse caso deixar como string, no máximo testar se o formato tá certo, lendo char-by-char por exemplo.

[/quote]

Nao acho legal Data como String nao, nem a titulo de aprendizado.
Esse é um dos fatores que a galera chega aqui nao entendendo como usar Datas em Java, como formatar exibicao e como fazer parse() da entrada do usuario. Professores estao ensinando a armazenar como String.[/quote]

uuuuuuiiiii :roll:

Tomei nessa :wink:

Po cara, se é pra aprender a formatar data beleza.

Mas se é um esforço a mais eu realmente acho meio desnecessário.

É ÓBVIO que o esforço vai fazer ele aprender, isso é válido sim.

Então fica a cargo do cara.

Se ele quiser mesmo fazer pegando uma string do usuário e passando pra data, acho ‘na moral’.

edit:

Passeando pelo GUJ eu achei esse tópico:

http://www.guj.com.br/posts/list/41935.java

Fala de datas em sql porém diversos exemplos dados lá servem para string<->date.

[quote=dmandrak][quote=fabim][quote=dmandrak][quote=fabim]GOD. Nao vou ler esse codigo todo.

Respondendo suas duvidas: Vc usa o try/catch em um trecho de codigo onde ‘alguma coisa pode dar errado’. Por exemplo, se vc da um Integer.parseInt em uma entrada do usuario, mas esse usuario entra com “VINTE” no valor da Idade, vc ganharara uma “NumberFormatException”,
e poderia devolver uma mensagem como “Digite um numero valido” (Exemplo bem grosseiro, no geral vc usa exceptions pra operações de I/O, Banco de Dados, etc…)

Datas: Use Calendar, ou Timestamp mesmo. No caso do timestamp, ele armazena a data em miliseconds (se nao me engano, decorridos a partir de 1970). Claro que nao interessa vc mostrar isso pro usuario, mas pra exibição vc pode usar formatadores como por exemplo SimpleDateFormat.
Ex: new SimpleDateFormat(“dd/MM/yyyy”).format( seuObjetoTimestamp )
[/quote]

O detalhe é que usuário que digita a data.

Como nós postamos ao mesmo tempo :wink: vc não deve ter visto o que escrevi.

Eu ainda acho melhor nesse caso deixar como string, no máximo testar se o formato tá certo, lendo char-by-char por exemplo.

[/quote]

Nao acho legal Data como String nao, nem a titulo de aprendizado.
Esse é um dos fatores que a galera chega aqui nao entendendo como usar Datas em Java, como formatar exibicao e como fazer parse() da entrada do usuario. Professores estao ensinando a armazenar como String.[/quote]

uuuuuuiiiii :roll:

Tomei nessa :wink:

Po cara, se é pra aprender a formatar data beleza.

Mas se é um esforço a mais eu realmente acho meio desnecessário.

É ÓBVIO que o esforço vai fazer ele aprender, isso é válido sim.

Então fica a cargo do cara.

Se ele quiser mesmo fazer pegando uma string do usuário e passando pra data, acho ‘na moral’.

edit:

Passeando pelo GUJ eu achei esse tópico:

http://www.guj.com.br/posts/list/41935.java

Fala de datas em sql porém diversos exemplos dados lá servem para string<->date.[/quote]

é isso ai RAMBO :lol: , aprenda logo a mexer com data direto sem ficar fazeendo essas “GANBI” com String…