Estou aprendendo JAVA e fazendo alguns exercícios de fixação, porém travei nesse e não estou conseguindo fazê-lo.
Crie uma classe para representar uma pessoa, com os atributos privados de nome, data de nascimento e altura. Crie os métodos públicos necessários para sets e gets e também um método para imprimir todos dados de uma pessoa. Crie um método para calcular a idade da pessoa. - JAVA
declarando os atributos. Altura deve ser um número real, e acredito que nome e data serão String.
ex:
private String nome;
private double altura;
//declarando os atributos privados nome e altura.
Os setters e Getters funcionam assim: Os Setters definem o valor do atributo, e os Getters informam a quem está usando
Você pode fazer por exemplo assim:
private double altura;
public void setAltura(double altura){ //não necessariamente precisa ter o mesmo nome do atributo declarado
this.altura = altura //this.atributo se refere ao atributo daquele objeto.
}
public double getAltura(){ //public double pois retorna um valor double
return this.altura;
}
para fazer o calculo de idade, podemos utilizar vários métodos, mas o que eu pensei (provavelmente não será o mais eficiente) seria por ex:
uma data de nascimento normal é DD/MM/AAAA (por ex “01/01/2001”)
podemos ver que os 2 primeiros caracteres(0 e 1) (caractere 0 = 0, caractere 1 = 1, caractere 2 = /,…) são o dia. o 4 e 5(3 e 4) serão o mes, e do 7 ao 10 (6 ao 9) será o ano. você pode tentar fazer uma comparação.
você pode usar o método “charAt(posição)” para obter um caractere da posição.
ex:
String StringDataDeNascimento = "29/05/2019";
String aux = String.valueOf(StringDataDeNascimento.charAt(6) +""+
StringDataDeNascimento.charAt(7) +""+ StringDataDeNascimento.charAt(8) +""+
StringDataDeNascimento.charAt(9)); //Recebe os valores nas posições 6,7,8,9 do string data
int Ano = Integer.parseInt(aux); //converte a string para int
após isso, para calcular a idade, você pega o ano atual (2019, por ex) (existem métodos que pegam a data atual no sistema) e subtrai a data de nascimento
ex: nasci em 01/01/2000
o código extrairá o numero 2000
então, posso fazer:
int idade = 2019 - anoDeNascimento; //que no caso vale 2000, resultando em 19
você pode fazer a verificação de mês e dia também, por ex. se meu aniversário é em dezembro, mas estamos em maio, então não devo contar esse ano (no exemplo acima resultaria 19 -1 = 18
pode fazer por ex:
int mes = (o mesmo que fiz pra ano, nas posições 3 e 4 da data);
int mesatual = 5; //maio
if(mes > mesatual){
idade--;
}
caso algo esteja errado, me corrijam por favor!