Day of the week, java, and Zeller's congruence!
<p>I'm doing this programming exercise out of a textbook where we are given an algorithm for calculating the day of the week called Zeller's congruence. Well do you think I can get the same output as the sample run in the textbook! They go with year 2002, month 3 and day of month 26. The sample reads back Tuesday. I've made several hours of mods and rewrites and can't get anywhere near Tuesday!</p>

<p>It's page 133 of Java Comprehensive textbook 8e if anyone has it... I'm a beginner so constructive feedback most welcome!</p>

<p><a href="http://en.wikipedia.org/wiki/Zeller%27s_congruence#Implementation_in_software" rel="nofollow">Zeller's Congruence</a></p>

<p>Your advice would be appreciated:</p>

<pre><code>import java.util.Scanner;

public class DayOfTheWeek {

   public static void main(String[] args) {

   // Set up the scanner...
   Scanner input = new Scanner(System.in);

   // Set up the day's of the week with 0 being Sat as per algorithm.           
   final String[] DAY_OF_WEEK = {"Saturday", "Sunday", "Monday", 
       "Tuesday", "Wednesday", "Thursday", "Friday"};

   // Get the year       
   System.out.print("Enter the year (e.g., 2002): ");             
   int year = input.nextInt();

   // Get the month
   System.out.print("Enter the month 1-12: ");  
   int month = input.nextInt();

   // Get the day
   System.out.print("Enter the day 1-31: ");  
   int day = input.nextInt();

   // According to the algorithm Jan is 13 &amp; Feb 14...
   if (month == 1) month = 13;
   else if (month == 2) month = 14;

   // j Is the century.
   int j = year / 100;

   // k Is the year of the century.
   int k = year % 100 ;

   // Calculate
   double h = (month + ((26*(month + 1)) / 10) + k + (k / 4) +
           (j / 4) + (5 * j)) % 7;

   // Cast answer back to integer to get result from array
   int ans = (int)h;

   // Print result
   System.out.println("Day of the week is: " + DAY_OF_WEEK[ans]);

   }
}
</code></pre>
