Vedr. opgave i bog: Java - How to program, omkring alder ud fra kalender.
Hej eksperter..Er løbet ind i nogle problemer som jeg ikke kan hitte ud af.
Mit program skal kunne beregne en maxpuls, samt det bedste træningspuls-interval ud fra alder. Alder givet ud fra 3 parametre, dag/måned/år. Indtastet separat i hver sit indtastningsvindue.
Jeg benytter så et testprogram hvor alle inputs'ne kommer fra. Det er umiddelbart ikke det der er problemet.
Problemet med programmet er at den ikke regner alderen ud. Og dermed regner den heller ikke alle de andre ting ud.
Håber på lidt hints, da jeg ikke har arbejdet med calendar "princippet" før i java.
På forhånd tak.
package JAVA.HTP8E;
import java.util.*;
public class HeartRates
{
private String firstName1;
private String lastName1;
private int dayOfBirth1;
private int monthOfBirth1;
private int yearOfBirth1;
private int age;
private int maxHeart;
private int lowerTargetHeart;
private int upperTargetHeart;
// sout+tab = system.out.println("");
public HeartRates ( String firstName2, String lastName2, int dayOfBirth2, int monthOfBirth2, int yearOfBirth2, int age2, int maxHeart2,
int lowerTargetHeart2, int upperTargetHeart2 )
{
firstName1 = firstName2;
lastName1 = lastName2;
dayOfBirth1 = dayOfBirth2;
monthOfBirth1 = monthOfBirth2;
yearOfBirth1 = yearOfBirth2;
age = age2;
maxHeart = maxHeart2;
lowerTargetHeart = lowerTargetHeart2;
upperTargetHeart = upperTargetHeart2;
}
//Fornavnet
public void setFirstName( String fName)
{
firstName1 = fName;
}
public String getFirstName()
{
return firstName1;
}
//Efternavnet
public void setLastName( String lName)
{
lastName1 = lName;
}
public String getLastName()
{
return lastName1;
}
//Fødselsdagen
public void setDayOfBirth( int dob)
{
if (dob <= 0)
{
System.out.println("Wrong input, result may not be right.");
}
else
dob = dayOfBirth1;
}
public int getDayOfBirth()
{
return dayOfBirth1;
}
public void setMonthOfBirth( int mob)
{
if (mob <= 0)
{
System.out.println("Wrong input, result may not be right.");
}
else
mob = monthOfBirth1;
}
public int getMonthOfBirth()
{
return monthOfBirth1;
}
public void setYearOfBirth( int yob)
{
if (yob <= 0)
{
System.out.println("Wrong input, result may not be right.");
}
else
yob = yearOfBirth1;
}
public int getYearOfBirth()
{
return yearOfBirth1;
}
// Alderberegning
public void setAge()
{
Calendar cal = new GregorianCalendar(yearOfBirth1, monthOfBirth1, dayOfBirth1);
Calendar now = new GregorianCalendar();
age = now.get(Calendar.YEAR) - cal.get(Calendar.YEAR);
if((cal.get(Calendar.MONTH) > now.get(Calendar.MONTH))
|| (cal.get(Calendar.MONTH) == now.get(Calendar.MONTH)
&& cal.get(Calendar.DAY_OF_MONTH) > now.get(Calendar.DAY_OF_MONTH)))
{
age--;
}
}
public int getAge()
{
return age;
}
// Heart rate calculating.
public int getMaxHeart()
{
maxHeart = (220-age);
return maxHeart;
}
public int getLowerTargetHeartrate()
{
lowerTargetHeart = (int) (maxHeart * 0.5);
return lowerTargetHeart;
}
public int getUpperTargetHeartrate()
{
upperTargetHeart = (int) (maxHeart * 0.85);
return upperTargetHeart;
}
// Vis beskeden
public void displayMessage()
{
System.out.printf( "Name: %s %s\nAge: %s\nMaximum heartrate: %s\nTarget heartrate is between: %s - %s.\n\n",
getFirstName(),getLastName(), getAge(), getMaxHeart(), getLowerTargetHeartrate(), getUpperTargetHeartrate() );
}
}
