Você está aqui: Java ::: Dicas & Truques ::: Data e Hora

Como ler uma data informada pelo usuário em Java, fazer a validação usando SimpleDateFormat e retornar um objeto Date

Quantidade de visualizações: 472 vezes
Em várias situações nossas aplicações Java precisam ler datas informadas pelo usuário ou vindas de arquivos, e, uma das maiores dores de cabeça que temos é validar essas datas corretamente, de forma a evitar cálculos errados.

Nesta dica mostrarei como podemos usar um objeto da classe SimpleDateFormat e o seu método parse() para ler uma data em formato de string e retornar um objeto Date. Note que a data será informada pelo usuário e lida por meio do método nextLine() da classe Scanner.

Observe também o valor false passado para o método setLenient() da classe SimpleDateFormat para reforçar a validação da data e não permitir valores que excedem o mínimo e máximo permitido para a faixa de dias e meses.

Veja o código Java completo para o exemplo:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

package estudos;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;

public class Estudos {
  public static void main(String[] args) {
    // para ler a entrada do usuário
    Scanner entrada = new Scanner(System.in);
    
    // vamos ler a data
    System.out.print("Informe uma data (DD/MM/AAAA): ");
    String data = entrada.nextLine();
    
    // mostramos os resultados
    System.out.println("Você informou a data: " + data);
    try{
    System.out.println("O objeto Date construído foi: " +
      lerData(data));
    }
    catch(ParseException pe){
      System.out.println("Erro: " + pe);
    }
  }
  
  // função que lê a data informada pelo usuário, faz
  // a validação e retorna um novo objeto Date contendo a
  // data informada
  public static Date lerData(String data) throws ParseException{
    // primeiro vamos criar um objeto da classe SimpleDateFormat
    // com o formato desejado
    SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
    // recusa datas inválidas
    sdf.setLenient(false);
  
    // checamos se o tamanho da data está correto 
    if(data.length() != 10){
      throw new ParseException("Tamanho inválido: " + data, 0);
    }
    
    // retornamos a data construída
    return sdf.parse(data);
  }
}

Ao executar este código Java nós teremos o seguinte resultado:

Informe uma data (DD/MM/AAAA): 02/10/2021
Você informou a data: 02/10/2021
O objeto Date construído foi: Sat Oct 02 00:00:00 BRT 2021

Informe uma data (DD/MM/AAAA): 24/14/2020
Você informou a data: 24/14/2020
Erro: java.text.ParseException: Unparseable date: "24/14/2020"

Link para compartilhar na Internet ou com seus amigos:

Java ::: Coleções (Collections) ::: Set (Conjunto)

Como usar objetos da interface Set do Java para representar a interseção (ou intersecção) de dois ou mais conjuntos

Quantidade de visualizações: 4549 vezes
Na teoria dos conjuntos, a interseção (português brasileiro) ou intersecção (português europeu) de dois ou mais conjuntos é o conjunto dos elementos que, simultaneamente, pertencem a dois ou mais destes conjuntos. Assim, seja A = {2, 5, 8, 19, 30} e B = {2, 3, 1, 30}. A interseção desses dois conjuntos é C = {2, 30}.

Na programação Java podemos representar a interseção de dois conjuntos usando objetos da interface Set e qualquer uma de suas implementações. Para este exemplo vou usar a classe TreeSet, que permite a ordenação dos elementos. Veja o código:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

package estudos;

import java.util.Iterator;
import java.util.Set;
import java.util.TreeSet;

public class Estudos{
  public static void main(String[] args) {
    // primeiro conjunto
    Set<Integer> conjuntoA = new TreeSet<>();
    conjuntoA.add(2);
    conjuntoA.add(5);
    conjuntoA.add(8);
    conjuntoA.add(19);
    conjuntoA.add(30);
    
    // segundo conjunto
    Set<Integer> conjuntoB = new TreeSet<>();
    conjuntoB.add(2);
    conjuntoB.add(3);
    conjuntoB.add(1);
    conjuntoB.add(30);
    
    // vamos obter a interseção dos dois conjuntos      
    Set<Integer> conjuntoC = intersecao(conjuntoA, conjuntoB);        
    
    // vamos exibir os elementos no conjunto C
    Iterator iterator = conjuntoC.iterator();
    while(iterator.hasNext()){
      System.out.println(iterator.next());
    }
  }
  
  // método genérico que permite obter a interseção de dois conjuntos
  public static <T> Set<T> intersecao(Set<T> conjA, Set<T> conjB){
    Set<T> conjC = new TreeSet<>();
    // percorremos todos os elementos do conjunto A
    for(T elemento: conjA){
      // e verificamos se o elemento está contido no conjunto B
      if(conjB.contains(elemento)){
        conjC.add(elemento); // se estiver contido nós o adicionamos no conjunto C 
      }
    }
    
    return conjC; // e retornamos o conjunto C
  }
}

Ao executarmos este código teremos o seguinte resultado:

2
30


Java ::: Classes e Componentes ::: JComponent

Java Swing - Como usar a classe JComponent em suas aplicações Java Swing

Quantidade de visualizações: 11933 vezes
A classe JComponent serve como classe base abstrata a partir da qual todos os componentes Swing herdam suas funcionalidades. Esta classe herda da Classe Container, que por sua vez herda de Component, que herda de Object.

Várias classes do Java Swing herdam de JComponent, direta ou indiretamente. Por exemplo, a classe JButton herda de javax.swing.AbstractButton, que, por sua vez, herda de javax.swing.JComponent.

Entender o papel da classe JComponent é muito importante, pois nos permite o uso de polimorfismo e também de vários design patterns. Sendo assim, analise o seguinte código Java Swing:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

package arquivodecodigos;

import java.awt.*;
import javax.swing.*;
 
public class Estudos extends JFrame{
  public Estudos() {
    super("Minha primeira aplicação GUI");
     
    // vamos declarar um objeto da classe JComponent
    // e atribuir a ele um JButton
    JComponent btn = new JButton("Clique Aqui");
    getContentPane().add(btn, BorderLayout.SOUTH);
 
    setSize(350, 250);
    setVisible(true);
  }
   
  public static void main(String args[]){
    Estudos app = new Estudos();
    app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  }
}

Veja que declaramos uma variável do tipo JComponent e atribuímos a ela um objeto da classe JButton. Isso é perfeitamente possível, já que JButton herda de JComponent, ainda que indiretamente.

Entre as classes que herdam de JComponent estão: AbstractButton, BasicInternalFrameTitlePane, Box, Box.Filler, JColorChooser, JComboBox, JFileChooser, JInternalFrame, JInternalFrame.JDesktopIcon, JLabel, JLayeredPane, JList, JMenuBar, JOptionPane, JPanel, JPopupMenu, JProgressBar, JRootPane, JScrollBar, JScrollPane, JSeparator, JSlider, JSpinner, JSplitPane, JTabbedPane, JTable, JTableHeader, JTextComponent, JToolBar, JToolTip, JTree, JViewport.


Java ::: Desafios e Lista de Exercícios Resolvidos ::: Métodos, Procedimentos e Funções

Exercício Resolvido de Java - Escreva um método chamado inverter() que recebe um número inteiro e retorna este mesmo número invertido

Quantidade de visualizações: 7193 vezes
Pergunta/Tarefa:

Escreva um método Java chamado inverter() que recebe um número inteiro e retorna este mesmo número invertido. Este método deverá ter a seguinte assinatura:

public static int inverter(int numero){
  // sua implementação aqui
}
Este método deverá, obrigatoriamente, estar na classe principal (aquela que contém o método main()). Após a implementação do método inverter(), vá até o método main() e peça ao usuário para informar um número inteiro qualquer. Em seguida faça uma chamada ao método inverter() passando o valor informado como argumento, obtenha o retorno e exiba-o.

ATENÇÃO: Para a resolução deste exercício é permitido usar apenas os operadores aritméticos.

Sua saída deverá ser parecida com:

Informe um número inteiro: 487
O valor invertido é: 784
Resposta/Solução:

Veja a resolução comentada deste exercício usando Java:

Este código completo faz parte do nosso E-Book 350 Exercícios Resolvidos de Java - PDF com 500 páginas.
Domine lógica de programação e a linguagem Java com o nosso E-Book 350 Exercícios Exercícios de Java, para você estudar onde e quando quiser.

Este e-book contém exercícios resolvidos abrangendo os tópicos: Java básico, matemática e estatística, programação dinâmica, strings e caracteres, entrada e saída, estruturas condicionais, vetores e matrizes, funções, laços, recursividade, internet, arquivos e diretórios, programação orientada a objetos e muito mais.
Ver Conteúdo do E-book



Mais Desafios de Programação e Exercícios e Algoritmos Resolvidos de Java

Veja mais Dicas e truques de Java

Dicas e truques de outras linguagens

Códigos Fonte

Programa de Gestão Financeira Controle de Contas a Pagar e a Receber com Cadastro de Clientes e FornecedoresSoftware de Gestão Financeira com código fonte em PHP, MySQL, Bootstrap, jQuery - Inclui cadastro de clientes, fornecedores e ticket de atendimento
Diga adeus às planilhas do Excel e tenha 100% de controle sobre suas contas a pagar e a receber, gestão de receitas e despesas, cadastro de clientes e fornecedores com fotos e histórico de atendimentos. Código fonte completo e funcional, com instruções para instalação e configuração do banco de dados MySQL. Fácil de modificar e adicionar novas funcionalidades. Clique aqui e saiba mais
Controle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidadesControle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidades
Tenha o seu próprio sistema de controle de estoque web. com cadastro de produtos, categorias, fornecedores, entradas e saídas de produtos, com relatórios por data, margem de lucro e muito mais. Código simples e fácil de modificar. Acompanha instruções para instalação e criação do banco de dados MySQL. Clique aqui e saiba mais

Linguagens Mais Populares

1º lugar: Java
2º lugar: Python
3º lugar: C#
4º lugar: PHP
5º lugar: C
6º lugar: Delphi
7º lugar: JavaScript
8º lugar: C++
9º lugar: VB.NET
10º lugar: Ruby



© 2025 Arquivo de Códigos - Todos os direitos reservados
Neste momento há 44 usuários muito felizes estudando em nosso site.