\Java
Easter.java
```//********************************************************************
//
// Program #2
// Program Title: Easter.java
//
//********************************************************************
//
// Program Description and Design Overview:
//      A program that prints out the date for Easter Sunday of a given year
//
// Input Requirements:
//      Response to interactive prompt message for year,
//		a 4 digit integer
//		Response to interactive prompt message for continuing the program,
//		a string reply, "yes" or "no"
//		The program must also work correctly if "YES", "Yes", "NO", or "No" is entered.

//
// Output Requirements:
//      Welcome message and title:
//		"Welcome to the Cal Poly CPE 101 Easter Sunday Calculator"
//		(followed by an extra blank line)
//		User prompts:
//		"Enter the 4 digit year (for example, 1999, not 99)"
//		"Do you wish to calculate another Easter date (enter "no" or "yes")?"
//		Output of Results:
//		If an invalid year was entered (error message and prompt for another year value):
//		"Invalid year. Date must be between 1900 and 2099 inclusive.
//		Please enter the 4 digit year again."
//		If a valid year was entered:
//		"Easter is Sunday, MMM DD, in YYYY."
//		Where MMM = March or April, DD = date of month, and YYYY = year.
//
//	Problem Solution Discussion
//		You are required to write a program that prints out the date for Easter
//		Sunday of a given year. You must use the EASTER-1900 algorithm (described
//		below) that calculates the month and day of Easter Sunday for any year in
//		the range from 1900 to 2099 inclusive (the algorithm cannot calculate
//		correct Easter dates for years outside that range, however).
//
//	Data Structures
//
//	Name			Data Type		Description
//	----			---------		-----------
//	month			string			Month Easter is in
// 	answer			string			user input to question : "do you wish to input another year"
//  year			integer			user input
//  yearMod19		integer			user input % 19
//  yearMod4		integer			user input % 4
//  yearMod7		integer			user input % 7
//  xMod30			integer			(19 * user input + 24) mod 30
//  yMod7			integer			(2 * yearMod19 + 4 * yearMod4 + 6 * yearMod7 + 5) % 7
//  dayOfMonth		integer			the day of easter before it was adjusted
//
//	Problem Solution Design Steps
//		1. Print a welcome message and title
//		2. Repeat the following steps while the user's input response string value is not equal to "no" (either upper case or lower case letters):
//			1. Prompt the user for a year as a 4 digit integer
//			2. Input the year value
//			3. Check if the year is valid: while the year is not valid repeat these steps:
//				1. Print an error message
//				2. Prompt the user for a year as a 4 digit integer
//				3. Input the year value
//			4. Calculate the month and day using the Easter-1900 algorithm (see below)
//			5. Print out the result
//			6. Prompt the user: "Do you wish to input another year (enter "no" or "yes")?"
//			7. Input the user's response string
//
//	Program Preconditions:
//      user must enter valid year
//
//********************************************************************

import cs1.Keyboard;
public class Easter
{

//-----------------------------------------------------------------
//  A comment that must be replaced by comment(s) describing the    //  program's main method.
//-----------------------------------------------------------------
public static void main (String[] args)
{
String month ="",

int year,	//user input
yearMod19,	//user input % 19
yearMod4,	//user input % 4
yearMod7,	//user input % 7
xMod30,		//(19 * user input + 24) mod 30
yMod7,		//(2 * yearMod19 + 4 * yearMod4 + 6 * yearMod7 + 5) % 7
dayOfMonth,	//the day of easter before it was adjusted

System.out.println ("Welcome to the Cal Poly CPE 101 Easter Sunday Calculator");
System.out.println ();

while (! answer.equalsIgnoreCase("no"))//when value of string answer does not eqaul "no" without regard to case
{
System.out.println ("Enter the 4 digit year (for example, 1999, not 99)");
year = Keyboard.readInt();	//stores user input into integer variable

while (year <1900 || year >2100) //when valud of year is not between 1900 & 2100
{
System.out.println ("Invalid year. Date must be between 1900 and 2099 inclusive.\nPlease enter the 4 digit year again.");
year = Keyboard.readInt();	//stores user input into integer variable
}

//algorithm equations
yearMod19 = year % 19;
yearMod4 = year % 4;
yearMod7 = year % 7;
xMod30 = (19 * yearMod19 + 24) % 30;
yMod7 = (2 * yearMod4 + 4 * yearMod7 + 6 * xMod30 + 5) % 7;

if (year == 1954 || year == 1981 || year == 2049 || year == 2076)//if year is 1954 or 1981 or 2049 or 2076
{
dayOfMonth = (15 + xMod30 + yMod7);	//algorithm
}
else
{
dayOfMonth = (22 + xMod30 + yMod7);	//algorith
}

if (dayOfMonth <=31)	//if integer variable dayOfMonth is greater than or equal to 31
{
month = "March";
}
else if (dayOfMonth > 31)
{
month = "April";