Boa tarde!
eu to fazendo o exercício no livro java - como programar 8 edição pagina 80 e capitulo 3.17
e ai tentamos fazer calcular a data por idade, tem alguns está erro de calculo e fico estranho…
public class HealthProfile {
String nome;
String sobrenome;
String sexo;
int dia;
int mes;
int ano;
double altura;
double peso;
public HealthProfile(String nome, String sobrenome,String sexo, int dia,
int mes, int ano, double altura, double peso){
this.nome = nome;
this.sobrenome = sobrenome;
this.sexo = sexo;
this.dia = dia;
this.mes = mes;
this.ano = ano;
this.altura = altura;
this.peso = peso;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getSobrenome() {
return sobrenome;
}
public void setSobrenome(String sobrenome) {
this.sobrenome = sobrenome;
}
public String getSexo() {
return sexo;
}
public void setSexo(String sexo) {
this.sexo = sexo;
}
public int getDia() {
return dia;
}
public void setDia(int dia) {
this.dia = dia;
}
public int getMes() {
return mes;
}
public void setMes(int mes) {
this.mes = mes;
}
public int getAno() {
return ano;
}
public void setAno(int ano) {
this.ano = ano;
}
public double getAltura() {
return altura;
}
public void setAltura(double altura) {
this.altura = altura;
}
public double getPeso() {
return peso;
}
public void setPeso(double peso) {
this.peso = peso;
}
public int idade(){
Calendar cal = Calendar.getInstance();
int data = cal.get(Calendar.DAY_OF_MONTH);
int mes = cal.get(Calendar.MONTH) +1 ;
int ano = cal.get(Calendar.YEAR);
int idade = ano - this.ano;
if ( mes < this.mes){
--idade;
}
else {
if (data < this.dia){
--idade;
}
}
return idade;
}
public void displayMessage(){
if(idade()>= 70){
System.out.println("Zona alvo: 75 - 128 bpm \nMédia Máxima: 150 bpm" );
} else {
if(idade()>= 65){
System.out.println("Zona alvo: 78 - 132 bpm \nMédia Máxima: 155 bpm" );
} else {
if(idade()>= 60){
System.out.println("Zona alvo: 80 - 136 bpm \nMédia Máxima: 160 bpm" );
} else {
if(idade()>= 55){
System.out.println("Zona alvo: 83 - 140 bpm \nMédia Máxima: 165 bpm" );
}else {
if(idade()>= 50){
System.out.println("Zona alvo: 85 - 145 bpm \nMédia Máxima: 170 bpm" );
} else {
if(idade()>= 45){
System.out.println("Zona alvo: 88 - 149 bpm \nMédia Máxima: 175 bpm" );
} else {
if(idade()>= 40){
System.out.println("Zona alvo: 90 - 153 bpm \nMédia Máxima: 180 bpm" );
} else {
if(idade()>= 35){
System.out.println("Zona alvo: 93 - 157 bpm \nMédia Máxima: 185 bpm" );
} else {
if(idade()>= 30){
System.out.println("Zona alvo: 95 - 162 bpm \nMédia Máxima: 190 bpm" );
} else {
if(idade()>= 25){
System.out.println("Zona alvo: 98 - 166 bpm \nMédia Máxima: 195 bpm" );
}
}
}
}
}
}
}
}
}
}
}
outra clase para executar.
public class HealthProfileTest {
/**
* @param args
*/
public static void main(String[] args) {
DecimalFormat df = new DecimalFormat();
df.applyPattern("00.00");
Scanner sca = new Scanner(System.in);
System.out.println("Nome: ");
String nome = sca.nextLine();
System.out.println("Sobrenome: ");
String sobre = sca.nextLine();
System.out.println("Sexo: ");
String sexo = sca.nextLine();
System.out.println("Dia que nasceu: ");
int dia = sca.nextInt();
System.out.println("Mês que nasceu: ");
int mes = sca.nextInt();
System.out.println("Ano que nasceu: ");
int ano = sca.nextInt();
System.out.println("Quando altura você tem: ");
double altura = sca.nextDouble();
System.out.println("Quando peso você tem: ");
double peso = sca.nextDouble();
HealthProfile hp = new HealthProfile(nome, sobre, sexo, dia, mes, ano, altura, peso);
System.out.println();
System.out.println("1)O DADO");
System.out.println("Nome: "+hp.getNome()+
"\nSobrenome: "+hp.getSobrenome()+
"\nSexo: "+hp.getSexo()+
"\nData de nascimento: "+hp.getDia()+"/"+hp.getMes()+"/"+hp.getAno()+
"\nIdade: "+hp.idade()
);
System.out.println();
System.out.println("2)IMC");
System.out.printf("\nPeso: "+hp.getPeso()+
"\nAltura: "+hp.getAltura()+
"\nIMC: "+df.format(hp.imc())+
"\nSituação: ");
hp.displayImc();
System.out.println();
System.out.println("3)CONTROLE CARDIÁCO");
System.out.println("Idade: "+hp.idade()+
"\nSituação: ");
hp.displayMessage();
}
}
Fiz o teste digitando e esse fica o resultado, veja em baixo…
Nome:
jeison
Sobrenome:
pereira
Sexo:
masc
Dia que nasceu:
08
Mês que nasceu:
05
Ano que nasceu:
1982
Quando altura você tem:
1,54
Quando peso você tem:
45,5
1)O DADO
Nome: jeison
Sobrenome: pereira
Sexo: masc
Data de nascimento: 8/5/1982
Idade: 27
2)IMC
Peso: 45.5
Altura: 1.54
IMC: 19,19
Situação: Peso normal.
3)CONTROLE CARDIÁCO
Idade: 27
Situação:
Zona alvo: 98 - 166 bpm
Média Máxima: 195 bpm
veja a idade que fiquei estranho digitei a data 08/05/1982 é idade 28 anos mas a informação fica 27 anos. esse exercícios que fiz calcular data que peguei o exercícios que fiz antes estava funcionando corretamente e ai agora não funcionou? não estou entendo esse…
Espero que me ajude…