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 DateQuantidade de visualizações: 509 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 para ajustar o código abaixo de acordo com as suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar) Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar a manter o site livre de anúncios. Ficaremos eternamente gratos ;-) Nosso PIX é: osmar@arquivodecodigos.com.br ---------------------------------------------------------------------- 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" |
![]() |
Java ::: Pacote java.lang ::: Integer |
Java Básico - Como usar a constante SIZE da classe Integer para obter a quantidade de bits necessária para armazenar um intQuantidade de visualizações: 6756 vezes |
Em algumas situações gostaríamos de obter a quantidade de bits necessária para armazenar um valor do tipo int (inteiro). Para isso podemos usar a constante SIZE da classe Integer (uma classe wrapper que encapsula o valor primitivo int). Veja como isso pode ser feito:---------------------------------------------------------------------- Se precisar de ajuda para ajustar o código abaixo de acordo com as suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar) Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar a manter o site livre de anúncios. Ficaremos eternamente gratos ;-) Nosso PIX é: osmar@arquivodecodigos.com.br ---------------------------------------------------------------------- public class Estudos { public static void main(String[] args) { // vamos obter a quantidade de bits necessária para representar um int int quantBits = Integer.SIZE; // o resultado System.out.println("Um int ocupa " + quantBits + " bits, ou seja, " + (quantBits / 8) + " bytes"); } } Ao executarmos este código o resultado será: Um int ocupa 32 bits, ou seja, 4 bytes. |
Java ::: Desafios e Lista de Exercícios Resolvidos ::: Matemática e Estatística |
Exercícios Resolvidos de Java - Como converter de decimal para números romanos em JavaQuantidade de visualizações: 582 vezes |
Pergunta/Tarefa: Escreva um programa Java que pede para o usuário informar um número inteiro decimal e converta-o para o número romano correspondente. Sua saída deverá ser parecida com: Informe um número decimal: 2023 O número romano correspondente é: MMXXIII Veja a resolução comentada deste exercício usando Java: ---------------------------------------------------------------------- Se precisar de ajuda para ajustar o código abaixo de acordo com as suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar) Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar a manter o site livre de anúncios. Ficaremos eternamente gratos ;-) Nosso PIX é: osmar@arquivodecodigos.com.br ---------------------------------------------------------------------- package estudos; 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 criar um array com os valores decimais possíveis de // cada número romano int valoresNumerosRomanos[] = new int[]{1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1}; // representação dos números romanos String numerosRomanos[] = new String[]{"M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I"}; // vamos pedir para o usuário informar um número decimal System.out.print("Informe um número decimal: "); int numero = Integer.parseInt(entrada.nextLine()); // para guardar o resultado String resultado = ""; // o número é maior que zero? if (numero > 0) { // percorremos o array de valores decimais dos números romanos for(int i = 0;i < valoresNumerosRomanos.length; i++){ // enquanto o número informado for maior que o valor do // do número romano atual while(numero >= valoresNumerosRomanos[i]){ // reduz o número informado numero = numero - valoresNumerosRomanos[i]; // concatena o número romano e continua o cálculo resultado = resultado + numerosRomanos[i]; } } } // mostramos o resultado if(resultado.isEmpty()){ System.out.println("O número informado não possui número romano"); } else{ System.out.println("O número romano correspondente é: " + resultado); } } } |
Java ::: Desafios e Lista de Exercícios Resolvidos ::: Métodos, Procedimentos e Funções |
Exercício Resolvido de Java - Escreva uma função Java que recebe três números inteiros e retorna o menor delesQuantidade de visualizações: 947 vezes |
Pergunta/Tarefa: Escreva um programa Java que contenha um método ou função que recebe três números inteiros e retorne o menor deles como um inteiro. Seu método não deve produzir nenhuma saída, apenas retornar o menor número entre os três argumentos fornecidos. Sua saída deverá ser parecida com: Informe o primeiro número: 8 Informe o segundo número: 10 Informe o terceiro número: 7 O menor número é: 7 Veja a resolução comentada deste exercício em Java: ---------------------------------------------------------------------- Se precisar de ajuda para ajustar o código abaixo de acordo com as suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar) Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar a manter o site livre de anúncios. Ficaremos eternamente gratos ;-) Nosso PIX é: osmar@arquivodecodigos.com.br ---------------------------------------------------------------------- package estudos; 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 pedir para o usuário informar três // números inteiros System.out.print("Informe o primeiro número: "); int n1 = Integer.parseInt(entrada.nextLine()); System.out.print("Informe o segundo número: "); int n2 = Integer.parseInt(entrada.nextLine()); System.out.print("Informe o terceiro número: "); int n3 = Integer.parseInt(entrada.nextLine()); // agora vamos calcular o menor número int menorNumero = menor(n1, n2, n3); // e mostramos o resultado System.out.println("O menor número é: " + menorNumero); } // método que recebe três números e retorna o menor deles public static int menor(int a, int b, int c){ return Math.min(Math.min(a, b), c); } } |
Java ::: Dicas & Truques ::: Matemática e Estatística |
Como resolver uma equação do segundo grau em Java - Como calcular Bhaskara em JavaQuantidade de visualizações: 2933 vezes |
Nesta dica mostrarei como encontrar as raízes de uma equação quadrática, ou seja, uma equação do 2º usando a linguagem Java. Definimos como equação do 2º grau ou equações quadráticas qualquer equação do tipo ax² + bx + c = 0 em que a, b e c são números reais e a ≠ 0. Ela recebe esse nome porque, no primeiro membro da igualdade, há um polinômio de grau dois com uma única incógnita. Note que, dos coeficientes a, b e c, somente o a é diferente de zero, pois, caso ele fosse igual a zero, o termo ax² seria igual a zero, logo a equação se tornaria uma equação do primeiro grau: bx + c = 0. Independentemente da ordem da equação, o coeficiente a sempre acompanha o termo x², o coeficiente b sempre acompanha o termo x, e o coeficiente c é sempre o termo independente. Como resolver uma equação do 2º grau Conhecemos como soluções ou raízes da equação ax² + bx + c = 0 os valores de x que fazem com que essa equação seja verdadeira. Uma equação do 2º grau pode ter no máximo dois números reais que sejam raízes dela. Para resolver equações do 2º grau completas, existem dois métodos mais comuns: a) Fórmula de Bhaskara; b) Soma e produto. O primeiro método é bastante mecânico, o que faz com que muitos o prefiram. Já para utilizar o segundo, é necessário o conhecimento de múltiplos e divisores. Além disso, quando as soluções da equação são números quebrados, soma e produto não é uma alternativa boa. Como resolver uma equação do 2º grau usando Bhaskara Como nosso código Java vai resolver a equação quadrática usando a Fórmula de Bhaskara, o primeiro passo é encontrar o determinante. Veja: \[\Delta =b^2-4ac\] Nem sempre a equação possui solução real. O valor do determinante é que nos indica isso, existindo três possibilidades: a) Se determinante > 0, então a equação possui duas soluções reais. b) Se determinante = 0, então a equação possui uma única solução real. c) Se determinante < 0, então a equação não possui solução real. Encontrado o determinante, só precisamos substituir os valores, incluindo o determinante, na Fórmula de Bhaskara: \[x = \dfrac{- b\pm\sqrt{b^2- 4ac}}{2a}\] Vamos agora ao código Java. Nossa aplicação vai pedir para o usuário informar os valores dos três coeficientes a, b e c e, em seguida, vai apresentar as raizes da equação: ---------------------------------------------------------------------- Se precisar de ajuda para ajustar o código abaixo de acordo com as suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar) Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar a manter o site livre de anúncios. Ficaremos eternamente gratos ;-) Nosso PIX é: osmar@arquivodecodigos.com.br ---------------------------------------------------------------------- package estudos; import java.util.Scanner; public class Estudos{ public static void main(String[] args){ // para efetuar a leitura do usuário Scanner entrada = new Scanner(System.in); // os coeficientes double a, b, c; // as duas raizes, a imaginaria e o discriminante double raiz1, raiz2, imaginaria, discriminante; // vamos pedir para o usuário informar os valores dos coeficientes System.out.print("Valor do coeficiente a: "); a = Double.parseDouble(entrada.nextLine()); System.out.print("Valor do coeficiente b: "); b = Double.parseDouble(entrada.nextLine()); System.out.print("Valor do coeficiente c: "); c = Double.parseDouble(entrada.nextLine()); // vamos calcular o discriminante discriminante = (b * b) - (4 * a * c); // a equação possui duas soluções reais? if(discriminante > 0){ raiz1 = (-b + Math.sqrt(discriminante)) / (2 * a); raiz2 = (-b - Math.sqrt(discriminante)) / (2 * a); System.out.println("Existem duas raizes: x1 = " + raiz1 + " e x2 = " + raiz2); } // a equação possui uma única solução real? else if(discriminante == 0){ raiz1 = raiz2 = -b / (2 * a); System.out.println("Existem duas raizes iguais: x1 = " + raiz1 + " e x2 = " + raiz2); } // a equação não possui solução real? else if(discriminante < 0){ raiz1 = raiz2 = -b / (2 * a); imaginaria = Math.sqrt(-discriminante) / (2 * a); System.out.println("Existem duas raízes complexas: x1 = " + raiz1 + " + " + imaginaria + " e x2 = " + raiz2 + " - " + imaginaria); } } } Ao executar este código Java nós teremos o seguinte resultado: Valor do coeficiente a: 1 Valor do coeficiente b: 2 Valor do coeficiente c: -3 Existem duas raizes: x1 = 1.0 e x2 = -3.0 |
Java ::: Classes e Componentes ::: JTree |
Java Swing - Como criar sua primeira JTree usando um vetor de nomes de linguagens de programaçãoQuantidade de visualizações: 13134 vezes |
Este exemplo mostra como criar uma JTree bem simples, e que servirá de base para a criação de aplicações Java Swing mais elaboradas. Os itens da JTree são fornecidos como um vetor de objetos, de forma que cada sub-vetor constitui uma seção da árvore. Os elementos (nós) são inseridos em suas devidas posições usando uma função recursiva. Veja o resultado na figura abaixo: ![]() E agora o código Java completo para o exemplo: ---------------------------------------------------------------------- Se precisar de ajuda para ajustar o código abaixo de acordo com as suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar) Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar a manter o site livre de anúncios. Ficaremos eternamente gratos ;-) Nosso PIX é: osmar@arquivodecodigos.com.br ---------------------------------------------------------------------- package arquivodecodigos; import javax.swing.*; import java.awt.*; import javax.swing.tree.*; public class Estudos extends JFrame{ public Estudos(){ super("Exemplo de uma JTree simples"); Object[] linguagens = { "Linguagens", new Object[]{ "Compiladas", "C++", "Delphi" }, new Object[]{ "Interpretadas", "JavaScript", "Python", "Ruby" } }; DefaultMutableTreeNode raiz = montar(linguagens); JTree arvore = new JTree(raiz); Container c = getContentPane(); c.setLayout(new FlowLayout()); JScrollPane scrollPane = new JScrollPane(arvore); c.add(scrollPane); setSize(400, 300); setVisible(true); } public static void main(String args[]){ Estudos app = new Estudos(); app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } private DefaultMutableTreeNode montar(Object[] hier){ DefaultMutableTreeNode no = new DefaultMutableTreeNode(hier[0]), filho; for(int i = 1; i < hier.length; i++){ Object n_no = hier[i]; if(n_no instanceof Object[]){ // nó possui filhos filho = montar((Object[])n_no); } else{ filho = new DefaultMutableTreeNode(n_no); // folha } no.add(filho); } return(no); } } |
Java ::: Fundamentos da Linguagem ::: Tipos de Dados |
Como usar o tipo de dados float do Java - Usando o tipo de dados float da linguagem JavaQuantidade de visualizações: 22631 vezes |
O tipo de dados float é usado quando precisamos armazenar números de ponto-flutuante (com parte fracionária) na faixa 1.401298464324817e-45f até 3.402823476638528860e+38f. Este tipo ocupa 32 bits na memória (o mesmo que um int) e possui precisão de 6 ou 7 dígitos significativos. Veja um exemplo de seu uso:---------------------------------------------------------------------- Se precisar de ajuda para ajustar o código abaixo de acordo com as suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar) Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar a manter o site livre de anúncios. Ficaremos eternamente gratos ;-) Nosso PIX é: osmar@arquivodecodigos.com.br ---------------------------------------------------------------------- public class Estudos{ public static void main(String args[]){ float valor = 54.5f; System.out.println("O valor da variável é: " + valor); System.exit(0); } } Antes de prosseguir, veja que inserí a letra "f" (ou "F") após o valor literal atribuído à variável. Se retirássemos esta letra, o compilador emitiria a seguinte mensagem de erro: Estudos.java:3: possible loss of precision found : double required: float float valor = 54.5; ^ 1 error Isso acontece porque, por padrão, um literal de ponto-flutuante é no mínimo do tipo double. E um double não cabe em um float. A definição da letra "f" ou "F" informa ao compilador que estamos realmente definindo um literal float. O tipo de dados float pode ser convertido (sem a necessidade de cast) para os seguintes tipos: float -> double Se precisarmos converter o tipo float para os tipos char, byte, short, int ou long, teremos que lançar mão de uma coerção (cast), também conhecida como conversão forçada. Veja: ---------------------------------------------------------------------- Se precisar de ajuda para ajustar o código abaixo de acordo com as suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar) Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar a manter o site livre de anúncios. Ficaremos eternamente gratos ;-) Nosso PIX é: osmar@arquivodecodigos.com.br ---------------------------------------------------------------------- float valor = 54.5f; int valor2 = (int)(valor); É preciso ficar atento ao fato de que uma coerção de um tipo de ponto-flutuante para um tipo integral (inteiro) resulta na perda da parte fracionária do valor que está sofrendo o cast. |
Java ::: Classes e Componentes ::: JTextArea |
Java Swing - Como obter o texto selecionado em um controle JTextArea do Java SwingQuantidade de visualizações: 8880 vezes |
Em algumas situações nós precisamos obter o texto selecionado pelo usuário em um componente JTextArea de nossas aplicações Java Swing. Isso pode ser feito com uma chamada ao seu método getSelectedText(). Veja um trecho de código no qual obtemos o texto selecionado em um JTextArea chamado textArea: ---------------------------------------------------------------------- Se precisar de ajuda para ajustar o código abaixo de acordo com as suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar) Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar a manter o site livre de anúncios. Ficaremos eternamente gratos ;-) Nosso PIX é: osmar@arquivodecodigos.com.br ---------------------------------------------------------------------- textArea = new JTextArea(10, 20); String selecionado = textArea.getSelectedText(); |
Java ::: Dicas & Truques ::: Strings e Caracteres |
Java para iniciantes - Como substituir caracteres em uma string usando o método replace() da classe StringQuantidade de visualizações: 212 vezes |
Em algumas ocasiões nós precisamos substituir caracteres, ou seja, letras, números e símbolos em palavras, frases ou textos. Para isso nós podemos usar o método replace() da classe String da linguagem Java. Veja como isso pode ser feito no código completo a seguir: ---------------------------------------------------------------------- Se precisar de ajuda para ajustar o código abaixo de acordo com as suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar) Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar a manter o site livre de anúncios. Ficaremos eternamente gratos ;-) Nosso PIX é: osmar@arquivodecodigos.com.br ---------------------------------------------------------------------- package arquivodecodigos; public class Estudos{ public static void main(String[] args){ String frase = "Programar em Java é bom"; System.out.println("Original: " + frase); // substitui todas as ocorrências de "a" por "e" String frase2 = frase.replace('a', 'e'); System.out.println("Com substituições: " + frase2); System.exit(0); } } Ao executar este código nós teremos o seguinte resultado: Original: Programar em Java é bom Com substituições: Progremer em Jeve é bom |
Desafios, Exercícios e Algoritmos Resolvidos de Java |
Veja mais Dicas e truques de Java |
Dicas e truques de outras linguagens |
JavaScript - Como usar objetos Set em seus códigos JavaScript |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
1º lugar: Java |