In: Computer Science
Use Java
(Science: day of the week)
Zeller’s congruence is an algorithm developed by Christian Zeller
to calculate the day of the week.
The formula is :
h = (q + 26(m+1)/10 + k + k/4 + j/4 + 5j) % 7
where
- h is the day of the week (0: Saturday, 1: Sunday, 2: Monday, 3:
Tuesday, 4: Wednesday, 5: Thursday, 6: Friday).
- q is the day of the month.
- m is the month (3: March, 4: April, ..., 12: December). January
and February are counted as months 13 and 14 of the previous
year.
- j is the century (i.e., year/100)
- k is the year of the century (i.e., year%100).
Note that the division in the formula performs an integer
division.
Write a program that prompts the user to enter a year, month, and
day of the month, and displays the name of the day of the
week.
Sample Run 1
Enter year: (e.g., 2012): 2015
Enter month: 1-12: 1
Enter the day of the month: 1-31: 25
Day of the week is Sunday
Sample Run 2
Enter year: (e.g., 2012): 2012
Enter month: 1-12: 5
Enter the day of the month: 1-31: 12
Day of the week is Saturday
Sample Run 3
Enter year: (e.g., 2012): 2002
Enter month: 1-12: 3
Enter the day of the month: 1-31: 26
Day of the week is Tuesday
Sample Run 4
Enter year: (e.g., 2012): 2008
Enter month: 1-12: 1
Enter the day of the month: 1-31: 1
Day of the week is Tuesday
Sample Run 5
Enter year: (e.g., 2012): 2000
Enter month: 1-12: 2
Enter the day of the month: 1-31: 12
Day of the week is Saturday
(Hint: January and February are counted as 13 and 14 in the
formula, so you need to convert the user input 1 to 13 and 2 to 14
for the month and change the year to the previous year.)
Class Name: Exercise03_21
If you get a logical or runtime error, please refer
https://liveexample.pearsoncmg.com/faq.html.
Sol: Here is the java code with a sample output below.
// Java program to find Find the Day
// for a Date
import java.util.*;
public class Main
{
// Print Day for a Date
static void Zellercongruence(int day, int month,
int year)
{
if (month == 1)
{
month = 13;
year--;
}
if (month == 2)
{
month = 14;
year--;
}
int q = day;
int m = month;
int k = year % 100;
int j = year / 100;
int h = q + 13*(m + 1) / 5 + k + k / 4 + j / 4 + 5 * j;
h = h % 7;
switch (h)
{
case 0 : System.out.println("Saturday"); break;
case 1 : System.out.println("Sunday"); break;
case 2 : System.out.println("Monday"); break;
case 3 : System.out.println("Tuesday"); break;
case 4 : System.out.println("Wednesday"); break;
case 5 : System.out.println("Thursday"); break;
case 6 : System.out.println("Friday"); break;
}
}
// Driver code
public static void main(String[] args)
{
Scanner sc=new Scanner(System.in);
System.out.println("Enter Year: (e.g., 2012): ");
int year=sc.nextInt();
System.out.println("Enter month: 1-12: ");
int m=sc.nextInt();
System.out.println("Enter the day of the month: 1-31: ");
int q=sc.nextInt();
Zellercongruence(q, m, year); //date (dd/mm/yyyy)
}
}
Sample Output: