ok now i'm confused, where did and why do we have objects: firstStudent and secondStudent?

Those are only parameters of the function

you can rename them by
(Profile p, Profile oldestStu) instead of first and second student

um is there no alternative for that? because that coding seems a little more advance.
Here's what i have so far as far as the coding goes, but again not sure if its logically correct but errors wise it's just giving 5 (not sure how to fix that). But take a look is that any better or did I just make it worse?

import java.util.Scanner;
public class Profile
{
	private String studentId;
	private String birthDateFormattedMon;
	private int birthDateMonth;
	private int birthDateDay;
	private int birthDateYear;
	private static int totalStudents;
	private static int birthDateTotal;

	Profile()
	{}

	Profile (int bdayDay, int bdayMonth, int bdayYear, String studId)
	{
		birthDateDay = bdayDay;
		birthDateMonth = bdayMonth;
		birthDateYear = bdayYear;
		studentId = studId;
	}

	public Profile(int year, int month, int day)
	{
		birthDateYear=year;
		birthDateMonth=month;
		birthDateDay=day;
	}

	public Profile(int month, int day)
	{
		birthDateMonth=month;
		birthDateDay=day;
    }

	public int getBirthDateDay()
	{
		return birthDateDay;

	}

	public int getBirthDateMonth()
	{
		return birthDateMonth;
	}

	public int getBirthDateYear()
	{
		return birthDateYear;
	}

	public String getStudentId()
	{
		return studentId;
	}

	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.studentId.equals("000")))
		{
			if (p.dataValid())
			{
				p.totalStudents();
				if (base.ckBirthDate(p))
					p.updateBirthDateTotal();
				if (base.ckOldestBirthDate(oldestStudent))
					oldestStudent.updateBirthDatetotal();
				Profile.formatMonth();
				p.writeStudentData();
				p.readData();
			}
		}


		System.out.println(p.getStudentId());
		System.out.println(p.getBirthDateDay());
		System.out.println(p.getBirthDateMonth());
		System.out.println(p.getBirthDateYear());
	}

	public void readData()
	{
		Scanner input = new Scanner(System.in);
		System.out.print("Enter a 3-digit student id:");
		studentId = input.next();
		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.");
	}


	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 oldestStu, Profile p)
	{
		oldestStu = 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);
	}


}

For the ckOldestBirthDate I suggest that following code take a time to stading it:

public static Profile checkOldestBirthDate(Profile firstStudent, Profile secondStudent) {
        Calendar calFirstStudent = Calendar.getInstance();
        Calendar calSecondStudent = Calendar.getInstance();
        calFirstStudent.set(firstStudent.getBirthDateYear(), firstStudent.getBirthDateMonth(), firstStudent.getBirthDateDay());
        calSecondStudent.set(secondStudent.getBirthDateYear(), secondStudent.getBirthDateMonth(), secondStudent.getBirthDateDay());

        return (calFirstStudent.after(calSecondStudent) ? secondStudent : firstStudent);
    }

That function returns the oldest student

Also we haven't covered the syntax: ".after" and ".getInstance()"

Look to the dataValid function it take a parameter.

All the code in the main function is wrong!!

oh, um how about the rest? is this much correct atleast?

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();

i'm not sure how to follow this through now :(

Here's a piece of the example program that I was trying to follow:

public static void main (String[] args)
{
	Sale transaction = new Sale();
	Sale base = new Sale ("567","123");
	Scanner input = new Scanner (System.in);
	String response;
	System.out.print("Would you like to enter a transaction?(Yes/No)");
	response = input.next();
	while (!(response.equals("no")))
	{
		transaction.readData();
		if (base.checkProduct(transaction))
			transaction.updateProductValue();
		if (base.checkSeller(transaction))
			transaction.updateSellerValue();
		System.out.print("Would you like to enter another transaction?(Yes/No)");
		response = input.next();
	}
	System.out.println ("Results for salesperson" + base.getSelllerId();
	Sale.writeTotals();
}

not sure what you meant with your last post. But here's the answer to before at least to avoid the errors.

while (!(p.studentId.equals("000")))
		{
			if (p.dataValid(p))
			{
				p.totalStudents();
				if (base.ckBirthDate(p))
					p.updateBirthDateTotal();
				if (base.ckOldestBirthDate(p,oldestStudent))
					oldestStudent.updateBirthDateTotal();
				p.formatMonth();
				p.writeStudentData(p);
				p.readData();
			}
		}

um oh ok but aren't we missing the function: "updateOldestBirthDate" ?

The messing one is writeStatistics I guess

um sorry but also it's not working logically :(

yes I guess the while loop isnt working properly, thats why its not getting out of it when you enter 000 to then writeStudentData

right?

No ir gets out it's correct for me

really? when i enter "000" for the studentid it still goes forth and asks me for the month and so forth heres the code i have:

import java.util.Scanner;
public class Profile
{
	private String studentId;
	private String birthDateFormattedMon;
	private int birthDateMonth;
	private int birthDateDay;
	private int birthDateYear;
	private static int totalStudents;
	private static int birthDateTotal;

	Profile()
	{}

	Profile (int bdayDay, int bdayMonth, int bdayYear, String studId)
	{
		birthDateDay = bdayDay;
		birthDateMonth = bdayMonth;
		birthDateYear = bdayYear;
		studentId = studId;
	}

	public Profile(int year, int month, int day)
	{
		birthDateYear=year;
		birthDateMonth=month;
		birthDateDay=day;
	}

	public Profile(int month, int day)
	{
		birthDateMonth=month;
		birthDateDay=day;
    }

	public int getBirthDateDay()
	{
		return birthDateDay;

	}

	public int getBirthDateMonth()
	{
		return birthDateMonth;
	}

	public int getBirthDateYear()
	{
		return birthDateYear;
	}

	public String getStudentId()
	{
		return studentId;
	}

	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.studentId.equals("000")))
		{
			if (p.dataValid(p))
			{

				p.totalStudents();
				if (base.ckBirthDate(p))
					p.updateBirthDateTotal();
				if (base.ckOldestBirthDate(p, oldestStudent))
					oldestStudent.updateBirthDateTotal();
				p.formatMonth();
				p.writeStudentData(p);
				p.readData();
			}

		}



		System.out.println(p.getStudentId());
		System.out.println(p.getBirthDateDay());
		System.out.println(p.getBirthDateMonth());
		System.out.println(p.getBirthDateYear());
	}

	public void readData()
	{
		Scanner input = new Scanner(System.in);
		System.out.print("Enter a 3-digit student id:");
		studentId = input.next();
		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.");
	}


	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 oldestStu, Profile p)
	{
		oldestStu = 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);
	}

}

Yes it asks for month day and year but it get out after that!

So we have to chage so thing inside the readData I guess.

Try this please:

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();
   	 }

oh i see what you mean so yes the only problem left is the outcomes/results

And maybe we have to make a treate if th number of digits is not egale to 3!!!

I did not like this too:

p.dataValid(p);

This is not convinient even if is not false.

That's why I made some little chage here is my version (draft of cours).

import java.util.Scanner;
public class Profile
{
	private String studentId;
	private String birthDateFormattedMon;
	private int birthDateMonth;
	private int birthDateDay;
	private int birthDateYear;
	private static int totalStudents;
	private static int birthDateTotal;

	Profile()
	{}

	Profile (int bdayDay, int bdayMonth, int bdayYear, String studId)
	{
		birthDateDay = bdayDay;
		birthDateMonth = bdayMonth;
		birthDateYear = bdayYear;
		studentId = studId;
	}

	public Profile(int year, int month, int day)
	{
		birthDateYear=year;
		birthDateMonth=month;
		birthDateDay=day;
	}

	public Profile(int month, int day)
	{
		birthDateMonth=month;
		birthDateDay=day;
    }

	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 static boolean dataValid (Profile stud)
	{

		boolean validate = true;
		if ((stud.getBirthDateMonth() < 01)||(stud.getBirthDateMonth() > 12))
		{
			validate = false;
			System.out.println("Month must be b/w the range 01-12 inclusive.");
		}

		if ((stud.getBirthDateDay() < 01) || (stud.getBirthDateDay() > 31))
		{
			validate = false;
			System.out.println("Day must be b/w the range 01-31 inclusive.");
		}

		if ((stud.getBirthDateYear() < 1900) || (stud.getBirthDateYear() > 1999))
		{
			validate = false;
			System.out.println("Year must be b/w the range 1900-1999 inclusive.");
		}

		return validate;
	}



	public static 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.");
	}


	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 oldestStu, Profile p)
	{
		oldestStu = 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 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.studentId.equals("000")))
		{
			if (Profile.dataValid(p))
			{
				Profile.totalStudents();
				if (base.ckBirthDate(p))
					p.updateBirthDateTotal();
				if (base.ckOldestBirthDate(p,oldestStudent))
					oldestStudent.updateBirthDateTotal();
				p.formatMonth();
				Profile.writeStudentData(p);
				p.readData();
			}
		}


		System.out.println(p.getStudentId());
		System.out.println(p.getBirthDateDay());
		System.out.println(p.getBirthDateMonth());
		System.out.println(p.getBirthDateYear());
	}
}

ok so i finished adding and making changes to this program, everything runs well and outputs just not the birth date of the oldest student. Would that be a logic error or syntax in the objects?

Well I got this out put for the Oldest student:

null31,1999is the birth date of the oldest student.

is this what you get?

yes!!!
that's what i'm talking about, i dont know why the month is becoming null but the day and year are the preset ones, they shouldn't be. the current student values should have been copied/transferred over. You get what i mean?

First;
Look at this:

//Here the oldestStudent is caled first
oldestStudent.updateOldestBirthdate(oldestStudent, student);

And this:

//but in the daclaration it is a second parameter
public boolean checkOldestBirthdate (Record stu, Record oldestStu)

But that did not resolve the questin juste make a change Ok?

oh i see what you mean there, i didn't know the order made a difference, but yes i went ahead and made that change!

Please let me now about a chages you made to update my code

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.