RESOLVIDO Calcular a diferença entre duas datas sem usar classes e objetos especiais do Java
7 respostas
R
rafael.p.felix
Pessoal,
Sou novo aqui no forum e estou precisando muito da ajuda de vocês. Tenho que fazer um exercicio simples usando algoritmo para entrar com uma data de nascimento (dd/mm/aaaa) de uma pessoa e uma data atual (dd/mm/aaaa). Importante é que não é necessário usar uma mascara de data apenas quero entrar com os valores e apresentar de forma simples. O sistema deve calcular se esta pessoa é maior de idade. Parece simples mas não deve ser usado nenhum recurso sofisticado da linguagem como classe e objetos. Só vale usando estrutura de decisão simples, composta ou encadeada.
Até o momento consegui fazer apenas o calculo para achar a idade.
importjavax.swing.*;classExercicio_12{publicstaticvoidmain(Stringargs[]){//declaração de variaveisintano_atual,ano_nascimento,calculo;//coleta de dadosano_atual=Integer.parseInt(JOptionPane.showInputDialog("Digite o ano atual:"));ano_nascimento=Integer.parseInt(JOptionPane.showInputDialog("Digite o ano de nascimento:"));//processamento de dadosif(ano_atual<ano_nascimento){calculo=(ano_atual-ano_nascimento);JOptionPane.showMessageDialog(null,"O ano de nascimento desta pessoa é: "+calculo);}else{calculo=(ano_nascimento-ano_atual);JOptionPane.showMessageDialog(null,"O ano de nascimento desta pessoa é: "+calculo);}System.exit(0);}}
Use as tas code e /code (entre []) para deixar seu código mais legivel (a identação fui eu que fiz…):
importjavax.swing.*;classExercicio_12{publicstaticvoidmain(Stringargs[]){//declaração de variaveis intano_atual,ano_nascimento,calculo;//coleta de dados ano_atual=Integer.parseInt(JOptionPane.showInputDialog("Digite o ano atual:"));ano_nascimento=Integer.parseInt(JOptionPane.showInputDialog("Digite o ano de nascimento:"));//processamento de dados if(ano_atual<ano_nascimento){calculo=(ano_atual-ano_nascimento);JOptionPane.showMessageDialog(null,"O ano de nascimento desta pessoa é: "+calculo);}else{calculo=(ano_nascimento-ano_atual);JOptionPane.showMessageDialog(null,"O ano de nascimento desta pessoa é: "+calculo);}System.exit(0);}}
fernandosavio
Tu pode fazer o seguinte:
idade=anoAtual-anoNascimento;if(mesAtual<mesNascimento){idade--;}elseif(mesAtual==mesNascimento&&diaAtual<diaNascimento){idade--;}JOptionPane.showMessageDialog(null,"O ano de nascimento desta pessoa é: "+idade);
PS: É só a lógica, se tiver algo errado desculpa pois posso estar inebriado pelos efeitos do alcool…
R
rafael.p.felix
Vou tentar usar o seu código, mas gostaria de entende-lo. Inicialmente você considerou que a pessoa usou o valor do ano atual subtraindo do ano de nascimento tudo bem isso eu consegui, mas no meu código ele simplesmente não entra na condição para resultar o exemplo: 2011 - 1959 = 52. O meu código sempre entra na condição do valor negativo ou seja o programa está rodando sempre resultando em -52.
importjavax.swing.*;classExercicio_12{publicstaticvoidmain(Stringargs[]){//declaração de variaveisintano_atual,ano_nascimento,calculo;//coleta de dadosano_atual=Integer.parseInt(JOptionPane.showInputDialog("Digite o ano atual:"));ano_nascimento=Integer.parseInt(JOptionPane.showInputDialog("Digite o ano de nascimento:"));//processamento de dadosif(ano_atual<ano_nascimento){calculo=(ano_atual-ano_nascimento);JOptionPane.showMessageDialog(null,"O ano de nascimento desta pessoa é: "+calculo);if(calculo<18){JOptionPane.showMessageDialog(null,"Você é menor de idade e tem: "+calculo+" anos");}}else{calculo=(ano_nascimento-ano_atual);JOptionPane.showMessageDialog(null,"O ano de nascimento desta pessoa é: "+calculo);if(calculo>18){JOptionPane.showMessageDialog(null,"Você é maior de idade e tem: "+calculo+" anos");}}System.exit(0);}}
ViniGodoy
Olá, bem-vindo ao GUJ.
Por favor, ao postar tópicos, NÃO DEIXE O TÍTULO EM LETRAS MAIÚSCULAS.
Também evite escrever coisas como “AJUDA:”, “SOCORRO” ou “URGENTE”.
Afinal, é obvio que você quer ajuda, e é falta de educação solicitar urgência.
Além disso, ao postar código, use a tag code para deixa-lo formatado, como descrito aqui:
R
rafael.p.felix
Entendi ViniGodoy,
Estou aprendendo a usar o forum e nos próximos posts irei respeitar as regras. Obrigado.
Rafael
E
entanglement
Para fazer seu exercício você precisa fazer algumas contas. Procurando por “fórmula diferença entre duas datas” na Internet achei isto:
Gostaria de agradecer aos colegas entanglement e fernandosavio que me ajudaram a resolver o problema. Abaixo segue corretamente o tratamento em Java.
importjavax.swing.*;classExercicio_12{publicstaticvoidmain(Stringargs[]){//declaração de variaveisintano_atual,mes_atual,ano_nascimento,mes_nascimento,idade;//coleta de dadosano_atual=Integer.parseInt(JOptionPane.showInputDialog("Digite o ano atual:"));mes_atual=Integer.parseInt(JOptionPane.showInputDialog("Digite o mes atual:"));ano_nascimento=Integer.parseInt(JOptionPane.showInputDialog("Digite o ano de nascimento:"));mes_nascimento=Integer.parseInt(JOptionPane.showInputDialog("Digite o mes de nascimento:"));//processamento de dadosidade=ano_atual-ano_nascimento;if(mes_nascimento>=mes_atual){JOptionPane.showMessageDialog(null,"Sua idade é: "+idade+" anos.");}else{idade=idade-1;JOptionPane.showMessageDialog(null,"Sua idade é: "+idade+" anos.");}System.exit(0);}}