RESOLVIDO Calcular a diferença entre duas datas sem usar classes e objetos especiais do Java

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.

[code]import javax.swing.*;

class Exercicio_12
{
public static void main (String args [])
{
//declaração de variaveis
int ano_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);	
}

}[/code]

Use as tas code e /code (entre []) para deixar seu código mais legivel (a identação fui eu que fiz…):

import javax.swing.*; 

class Exercicio_12 
{ 
   public static void main (String args []) 
   { 
      //declaração de variaveis 
      int ano_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);	
   } 
}

Tu pode fazer o seguinte:

idade = anoAtual - anoNascimento;
if(mesAtual<mesNascimento){
	idade--;
}else if(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… :slight_smile:

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.

import javax.swing.*;

  class Exercicio_12
  {
    public static void main (String args [])
	 {
	  //declaração de variaveis
	  int ano_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);
				 
				 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);	
	 }
  }

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:

Entendi ViniGodoy,

Estou aprendendo a usar o forum e nos próximos posts irei respeitar as regras. Obrigado.

Rafael

Para fazer seu exercício você precisa fazer algumas contas. Procurando por “fórmula diferença entre duas datas” na Internet achei isto:

http://inf.ufrgs.br/~cabral/Dia_do_Seculo.html

Pessoal,

Gostaria de agradecer aos colegas entanglement e fernandosavio que me ajudaram a resolver o problema. Abaixo segue corretamente o tratamento em Java.

[code]import javax.swing.*;

class Exercicio_12
{
public static void main (String args [])
{
//declaração de variaveis
int ano_atual, mes_atual, ano_nascimento, mes_nascimento, idade;

	 //coleta de dados
	 ano_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 dados
	 idade = 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);	
 }

}[/code]