Olá Pessoal!
Gostaria de um algoritimo que leia o nome de uma pessoa e sua data de nascimento. A partir da data atual, calcule a idade da pessoa.
Grato pela atenção, sem mais para o momento!
Jairo Dione
Olá Pessoal!
Gostaria de um algoritimo que leia o nome de uma pessoa e sua data de nascimento. A partir da data atual, calcule a idade da pessoa.
Grato pela atenção, sem mais para o momento!
Jairo Dione
Tenta isso:
Olá!
Estes links que vc enviou mostra o algoritmo com objetos, eu gostaria de desenvolver este algoritmo em java sem ser em objeto, pois é uma questão do livro Logica de programação e estrutura de dados com aplicação em Java 2ª Edição Sandra Puga, Gerson Rissetti
(Ano atual) menos (data de nascimento)
Acho que seria isso. ‘-’
Sim, o calculo pra tirar a idate é anoAtual-anoNascimento porem não entendi se ele realmente que apenas de forma comun como por exemplo aki:
[code]import javax.swing.JOptionPane;
/**
*
@author Joatan
*/
public class idade {
public static void main(String[]args){
int anoAtual = Integer.parseInt(JOptionPane.showInputDialog(“Em que ano estamos?”));
int anoNascimento = Integer.parseInt(JOptionPane.showInputDialog(“Em que ano você nasceu?”));
int idade = anoAtual-anoNascimento;
JOptionPane.showMessageDialog(null,"Voce tem: “+idade+ " anos”);
}
[/code]
existe todo um processo por traz , como tratamento dos Meses do aniversário , pegar o ano atual sem usar OO , só se você dizer em que ano estamos .
Não precisa solicitar o ano atual ao usuário. Basta pegar do sistema:
[code]import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.Scanner;
public class TestGUJ {
public static void main(String[] args) {
Calendar cal = GregorianCalendar.getInstance();
int anoAtual = cal.get(Calendar.YEAR);
Scanner in = new Scanner(System.in);
System.out.println("Ano em que você nasceu: ");
int anoNasc = in.nextInt();
System.out.println(“Voce tem: " + (anoAtual - anoNasc) + " anos.”);
}
}[/code]
Acredito que você não tenha lido o topico inteiro ^^
leia, veja os links que passei pra ele, veja oque ele disse ^^.
Acredito que você não tenha lido o topico inteiro ^^
leia, veja os links que passei pra ele, veja oque ele disse ^^.[/quote]
Li sim, tanto que vi você solicitando o ano atual em seu código.
[quote=JoatanGuj]Sim, o calculo pra tirar a idate é anoAtual-anoNascimento porem não entendi se ele realmente que apenas de forma comun como por exemplo aki:
[code]import javax.swing.JOptionPane;
/**
*
@author Joatan
*/
public class idade {
public static void main(String[]args){
int anoAtual = Integer.parseInt(JOptionPane.showInputDialog(“Em que ano estamos?”));
int anoNascimento = Integer.parseInt(JOptionPane.showInputDialog(“Em que ano você nasceu?”));
int idade = anoAtual-anoNascimento;
JOptionPane.showMessageDialog(null,"Voce tem: “+idade+ " anos”);
}
[/code]
existe todo um processo por traz , como tratamento dos Meses do aniversário , pegar o ano atual sem usar OO , só se você dizer em que ano estamos . [/quote]
Olá André e Joatan!
Estamos quase lá, mas o que acontece é que gostaria de pegar a data completa tipo “07/09/2011 esta data o sistema pega automaticamente, que seria a data atual” e pediriamos para o usuário digitar a data de nascimento, Ex.:“01/01/1901 esta seria a forma em que o usuario digitaria a data de nascimento”. Com isto o sistema calcula a idade, e não somente digitando o ano de nascimento e o ano atual, entenderam?
[quote=jairodione] Olá André e Joatan!
Estamos quase lá, mas o que acontece é que gostaria de pegar a data completa tipo “07/09/2011 esta data o sistema pega automaticamente, que seria a data atual” e pediriamos para o usuário digitar a data de nascimento, Ex.:“01/01/1901 esta seria a forma em que o usuario digitaria a data de nascimento”. Com isto o sistema calcula a idade, e não somente digitando o ano de nascimento e o ano atual, entenderam?[/quote]
olá, eu faria assim
// importar na classe
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.GregorianCalendar;
import java.math.BigDecimal;
import java.math.RoundingMode;
// metodo que retorna o intervalo de dias entre duas datas
public String contaDias(String dataInicialBR, String dataFinalBR) throws ParseException {
DateFormat df = new SimpleDateFormat("dd/MM/yyyy");
df.setLenient(false);
Date dataInicio = df.parse(dataInicialBR);
Date dataFim = df.parse(dataFinalBR);
long dt = (dataFim.getTime() - dataInicio.getTime()) + 3600000;
Long diasCorridosAnoLong = (dt / 86400000L);
Integer diasDecorridosInt = Integer.valueOf(diasCorridosAnoLong.toString());
String diasDecorridos = String.valueOf(diasDecorridosInt); //Sem numeros formatados;
return diasDecorridos;
}
// método para pegar a data do dia
public String getDataDiaBr(){
GregorianCalendar calendario = new GregorianCalendar();
int dia = calendario.get(calendario.DAY_OF_MONTH);
int mes = calendario.get(calendario.MONTH) + 1;
int ano = calendario.get(calendario.YEAR);
String dataIguana = String.valueOf(dia + "/" + mes + "/" + ano);
DateFormat df = new SimpleDateFormat("dd/MM/yyyy");
String diaIguana = df.format(new Date());
return diaIguana;
}
// agora para calcular a idade
public static BigDecimal calculaIdade(String dataDoMeuNascimento) throws ParseException{
BigDecimal qtdDias = new BigDecimal(contaDias(dataDoMeuNascimento,getDataDiaBr()));
BigDecimal ano = new BigDecimal(365.25);
BigDecimal idade = qtdDias.divide(ano,0, RoundingMode.DOWN);
return idade;
}
//**** para usar é só chamar o metodo calculaIdade e passar uma String com a data do nascimento
System.out.println(calculaIdade("06/09/1979"));
Eu disse que sem usar as classe ja existentes como Calendar fica bem dificil de se “pegar” a data atual do sistema.
pelo que eu tinha entendido ele não queria usar Objetos , porem agora que ele explicou eu pude , de fato , entender corretamente.
bye
Sinceramente…
O interessante é você posta a sua dúvida e não o seu problema.
Porque do jeito que está PARECE que você não tentou e está encomendado o código.
Use String.split("/");
Você vai pegar a String com a data , e vai dar um Split pra cada barra, assim retornando um vetor de 3 posições;
String data = "10/10/10";
String [] dia_mes_ano = data.split("/");
Olá julianolandim!
Deu certo, muito obrigado!!!
[quote=jairodione]Olá julianolandim!
Deu certo, muito obrigado!!![/quote]
Disponha, estamos aqui para ajudar :thumbup:
Galera consegui fazer um código muito simples e funciona perfeitamente, segue abaixo:
public int calculaIdade(String dt_nasc) {
// Data de hoje.
GregorianCalendar hoje = new GregorianCalendar();
int diah = hoje.get(Calendar.DAY_OF_MONTH);
int mesh = hoje.get(Calendar.MONTH) + 1;
int anoh = hoje.get(Calendar.YEAR);
// Data do nascimento.
int dian = Integer.valueOf(dt_nasc.substring(0,2));
int mesn = Integer.valueOf(dt_nasc.substring(3,5));
int anon = Integer.valueOf(dt_nasc.substring(6,10));
// Idade.
int idade;
if (mesn < mesh || (mesn == mesh && dian <= diah))
idade = anoh - anon;
else
idade = (anoh - anon)-1;
return (idade);
}