I am trying to output how many students were processed, how many of the students had a February 29th birth date and the birthdate of the oldest student. I figured out how to output the first two except how to output the oldest student.
is the ckOldestBirthDate
and updateoldestBirthDate in profile class wrong?
or the argument that i made in main in line 17 is wrong?
import java.util.Scanner;
public class StudentBirthdate
{
public static void main (String[] args)
{
Profile p = new Profile();
Profile oldestStudent = new Profile(1999,12, 31);
Profile base = new Profile (02, 29);
p.readData();
while (!(p.getStudentId().equals("000")))
{
if (p.dataValid(p))
{
p.totalStudents();
if (base.ckBirthDate(p))
p.updateBirthDateTotal();
if (base.ckOldestBirthDate(p,oldestStudent))
oldestStudent.updateOldestBirthDate(p, oldestStudent);;
p.formatMonth();
p.writeStudentData(p);
p.readData();
}
}
p.writeOutcomes();
}
}
import java.util.Scanner;
public class Profile
{
public String studentId;
private String birthDateFormattedMon;
private int birthDateMonth;
private int birthDateDay;
private int birthDateYear;
private static int totalStudents;
private static int birthDateTotal;
private static int NumStudents;
Profile()
{NumStudents++;}
Profile (int bdayDay, int bdayMonth, int bdayYear, String studId)
{
birthDateDay = bdayDay;
birthDateMonth = bdayMonth;
birthDateYear = bdayYear;
studentId = studId;
NumStudents++;
}
public Profile(int year, int month, int day)
{
birthDateYear=year;
birthDateMonth=month;
birthDateDay=day;
NumStudents++;
}
public Profile(int month, int day)
{
birthDateMonth=month;
birthDateDay=day;
NumStudents++;
}
public int getBirthDateDay()
{
return birthDateDay;
}
public int getBirthDateMonth()
{
return birthDateMonth;
}
public int getBirthDateYear()
{
return birthDateYear;
}
public String getStudentId()
{
return studentId;
}
public void readData()
{
Scanner input = new Scanner(System.in);
System.out.print("Enter a 3-digit student id:");
studentId = input.next();
if(studentId.equals("000")) return;
System.out.print("Enter month of birth date: ");
birthDateMonth = input.nextInt();
System.out.print("Enter day of birth date: ");
birthDateDay = input.nextInt();
System.out.print("Enter year of birth date: ");
birthDateYear = input.nextInt();
}
public boolean dataValid (Profile stud)
{
boolean validate = true;
if ((birthDateMonth < 01)||(birthDateMonth > 12))
{
validate = false;
System.out.println("Month must be b/w the range 01-12 inclusive.");
}
if ((birthDateDay < 01) || (birthDateDay > 31))
{
validate = false;
System.out.println("Day must be b/w the range 01-31 inclusive.");
}
if ((birthDateYear < 1900) || (birthDateYear > 1999))
{
validate = false;
System.out.println("Year must be b/w the range 1900-1999 inclusive.");
}
return validate;
}
public void totalStudents()
{
totalStudents++;
}
public void updateBirthDateTotal()
{
birthDateTotal++;
}
public void formatMonth()
{
switch (birthDateMonth)
{
case 1: birthDateFormattedMon = "January";
break;
case 2: birthDateFormattedMon = "February";
break;
case 3: birthDateFormattedMon = "March";
break;
case 4: birthDateFormattedMon = "April";
break;
case 5: birthDateFormattedMon = "May";
break;
case 6: birthDateFormattedMon = "June";
break;
case 7: birthDateFormattedMon = "July";
break;
case 8: birthDateFormattedMon = "August";
break;
case 9: birthDateFormattedMon = "September";
break;
case 10:birthDateFormattedMon = "October";
break;
case 11:birthDateFormattedMon = "November";
break;
case 12:birthDateFormattedMon = "Decemember";
}
}
public boolean ckBirthDate (Profile stud)
{
return((birthDateMonth == stud.birthDateMonth) && (birthDateDay == stud.birthDateDay))?true:false;
}
public static void writeOutcomes()
{
System.out.println(totalStudents + "students were processed.");
System.out.println(birthDateTotal + "students had a February 29th birth date.");
System.out.println(oldestStudent + "oldest.");
}
public boolean ckOldestBirthDate(Profile p, Profile oldestStu)
{
boolean birthDate = false;
if (p.birthDateYear < oldestStu.birthDateYear)
birthDate = true;
else if (p.birthDateYear == oldestStu.birthDateYear)
if (p.birthDateMonth < oldestStu.birthDateMonth)
birthDate = true;
else if (p.birthDateMonth == oldestStu.birthDateMonth)
if (p.birthDateDay < oldestStu.birthDateDay)
birthDate = true;
else
birthDate = false;
else
birthDate = false;
else
birthDate = false;
return birthDate;
}
public void updateOldestBirthDate(Profile oldestStudent, Profile p)
{
oldestStudent = p;
}
public static void writeStudentData(Profile p)
{
System.out.println("Student Id: " + p.studentId);
System.out.println("Birth Date: " + p.birthDateFormattedMon + p.birthDateDay + "," + p.birthDateYear);
}
public static int getNumStudents()
{
return NumStudents;
}
}