View Single Post
Old 09-22-2005, 11:53 AM   #9 (permalink)
ZimbuTM
Registered User
 
Join Date: Sep 2005
Posts: 10
ZimbuTM is on a distinguished road
The style I'm using isn't my own, but the one the teacher has taught us. The textbook we have also employs the same style. "Java Programming" by D.S. Malik.

Code:
//********************************************************************************
//AUTHOR: Rahul Malik
//Purpose: 1.   Convert year/month/day into proper date (April 30, 2005)
//.        2.   Display the day number. (April 30th, 2005 = Day 120 in the year)
//         3.   Display the NEXT date of inputted date (May 1, 2005)
//Last modified: September 19th, 2005
//********************************************************************************

import java.util.*;

public class Date
{

   //Initate scanner
   static Scanner keyboard = new Scanner(System.in);

   public static void main(String[] args)
   {

      //Variable and constant declaration
      int year       = 0;
      int month      = 0;
      int dayOfMonth = 0;

      final int DAYS_IN_JANUARY     = 31;
      int       DAYS_IN_FEBRUARY    = 28;
      final int DAYS_IN_MARCH       = 31;
      final int DAYS_IN_APRIL       = 30;
      final int DAYS_IN_MAY         = 31;
      final int DAYS_IN_JUNE        = 30;
      final int DAYS_IN_JULY        = 31;
      final int DAYS_IN_AUGUST      = 31;
      final int DAYS_IN_SEPTEMBER   = 30;
      final int DAYS_IN_OCTOBER     = 31;
      final int DAYS_IN_NOVEMBER    = 30;
      final int DAYS_IN_DECEMBER    = 31;

      //Prompt user for input (and detect string inputs)
      System.out.print("Please enter a date (year month day): ");


	  try
	  {
	  	  year       = keyboard.nextInt();
		  month      = keyboard.nextInt();
		  dayOfMonth = keyboard.nextInt();

	  }
	  catch (InputMismatchException e)
	  {
	  	  System.out.println("\nError. Numeric value expected\n");
	  	  System.exit(0);
	  }


      //create Boolean for leap year
      boolean isLeapYear = ( (year % 400 == 0) || ((year % 4 == 0) && !(year % 100 == 0)) );

      //Determine number of days in February
      if (isLeapYear)
      {
	     DAYS_IN_FEBRUARY = 29;
      }
      else
      {
		 DAYS_IN_FEBRUARY = 28;
      }


	  //Exclude invalid entries

      if (dayOfMonth > 31 || dayOfMonth < 1 || month > 12 || month < 1 || year < 1583)
      {

         System.out.println("\nPlease enter a valid date. Invalid date entries include:\n");
         System.out.println("1. Days larger than 31 OR Days lower than 1");
         System.out.println("2. Months larger than 12 OR Months lower than 1");
         System.out.println("3. Years below 1583 (for compliance with Gregorian date standards)\n");
         System.exit(0);
      }

      if (dayOfMonth > 30 && (month == 4 || month == 6 || month == 9 || month == 11))
      {
         System.out.println("\nThe months of April, June, September and November cannot have more than 30 days.");
         System.out.println("Please re-run the program\n");
         System.exit(0);
      }

      if (dayOfMonth > 29 && month == 2)
      {
         System.out.println("\nThe month of February cannot have more than 29 days.");
         System.out.println("Please re-run the program\n");
         System.exit(0);
      }


      if (!isLeapYear && (month == 2 && dayOfMonth == 29))
      {
         System.out.println("\nInputted date does not comply with Gregorian standards. \nFebruary can only have 29 days in a leap year.");
         System.out.println("Please re-run the program\n");
         System.exit(0);
      }




      //Store month name in variable

      String monthName = "";

      switch (month)
      {
            case 1:  monthName = "January";   break;
            case 2:  monthName = "February";  break;
            case 3:  monthName = "March";     break;
            case 4:  monthName = "April";     break;
            case 5:  monthName = "May";       break;
            case 6:  monthName = "June";      break;
            case 7:  monthName = "July";      break;
            case 8:  monthName = "August";    break;
            case 9:  monthName = "September"; break;
            case 10: monthName = "October";   break;
            case 11: monthName = "November";  break;
            case 12: monthName = "December";  break;
            default: break;
      }

      //Store day number in variable

      int dayNumber = 0;

      switch (month)
      {
         case 12: dayNumber  = dayNumber + DAYS_IN_NOVEMBER;
         case 11: dayNumber  = dayNumber + DAYS_IN_OCTOBER;
         case 10: dayNumber  = dayNumber + DAYS_IN_SEPTEMBER;
         case  9: dayNumber  = dayNumber + DAYS_IN_AUGUST;
         case  8: dayNumber  = dayNumber + DAYS_IN_JULY;
         case  7: dayNumber  = dayNumber + DAYS_IN_JUNE;
         case  6: dayNumber  = dayNumber + DAYS_IN_MAY;
         case  5: dayNumber  = dayNumber + DAYS_IN_APRIL;
         case  4: dayNumber  = dayNumber + DAYS_IN_MARCH;
         case  3: dayNumber = dayNumber + DAYS_IN_FEBRUARY;
         case  2: dayNumber = dayNumber + DAYS_IN_JANUARY;
         case  1: dayNumber = dayNumber + dayOfMonth;
         default: break;

      }


      //Store next date values in variables


     int nextDay      = 0;
     int nextYear     = 0;

      String nextMonth = "";

      switch (month)
      {
         case 1: if  (dayOfMonth == DAYS_IN_JANUARY)
                  {
                      nextDay = 1;
                      nextMonth = "February";
                  }
                 else
                  {
					  nextDay = (dayOfMonth + 1);
               		  nextMonth = monthName;
              	  }

                  break;

         case 2: if (dayOfMonth == DAYS_IN_FEBRUARY)
                  {
                      nextDay = 1;
                      nextMonth = "March";
                  }
                 else
                  {
					  nextDay = (dayOfMonth + 1);
               		  nextMonth = monthName;
                  }
                  break;

         case 3: if (dayOfMonth == DAYS_IN_MARCH)
                  {
                      nextDay = 1;
                      nextMonth = "April";
                  }
                 else
                  {
					  nextDay = (dayOfMonth + 1);
               		  nextMonth = monthName;
                  }
                  break;

         case 4: if (dayOfMonth == DAYS_IN_APRIL)
                  {
                      nextDay = 1;
                      nextMonth = "May";
                  }
                 else
                  {
					  nextDay = (dayOfMonth + 1);
                      nextMonth = monthName;
              	  }
                  break;

         case 5: if (dayOfMonth == DAYS_IN_MAY)
                  {
                     nextDay = 1;
                     nextMonth = "June";
                  }
                 else
                  {
					  nextDay = (dayOfMonth + 1);
               		  nextMonth = monthName;
                  }
                  break;

         case 6: if (dayOfMonth == DAYS_IN_JUNE)
                  {
                     nextDay = 1;
                     nextMonth = "July";
                  }
                 else
                  {
					  nextDay = (dayOfMonth + 1);
                      nextMonth = monthName;
                  }
                  break;

         case 7: if (dayOfMonth == DAYS_IN_JULY)
                  {
                     nextDay = 1;
                     nextMonth = "August";
                  }
                 else
                  {   nextDay = (dayOfMonth + 1);
               		  nextMonth = monthName;
				  }
                  break;

         case 8: if (dayOfMonth == DAYS_IN_AUGUST)
                  {
                     nextDay = 1;
                     nextMonth = "September";
                  }
                 else
                  {
					  nextDay = (dayOfMonth + 1);
               	      nextMonth = monthName;
                  }
                  break;

         case 9: if (dayOfMonth == DAYS_IN_SEPTEMBER)
                  {
                     nextDay = 1;
                     nextMonth = "October";
                  }
                 else
                  {
					  nextDay = (dayOfMonth + 1);
                      nextMonth = monthName;
                  }
                  break;

         case 10: if (dayOfMonth == DAYS_IN_OCTOBER)
                  {
                     nextDay = 1;
                     nextMonth = "November";
                  }
                 else
                  {
					  nextDay = (dayOfMonth + 1);
               		  nextMonth = monthName;
                  }
                  break;

         case 11: if (dayOfMonth == DAYS_IN_NOVEMBER)
                  {
                     nextDay = 1;
                     nextMonth = "December";
                  }
                 else
                  {
					  nextDay = (dayOfMonth + 1);
                      nextMonth = monthName;
                  }
                  break;

         case 12: if (dayOfMonth == DAYS_IN_DECEMBER)
                  {
                     nextDay = 1;
                     nextMonth = "January";
                  }
                  else
                  {

                     nextDay = (dayOfMonth + 1);
                     nextMonth = monthName;
                  }

                  break;

         default: break;
      }

      //Store next year value in variable

      if (monthName == "December" && dayOfMonth == 31)
      {
         nextYear = (year + 1);
      }
      else
      {
         nextYear = year;
      }



      	System.out.println("\nThe date is: " + monthName + " " + dayOfMonth + ", " + year);
      	System.out.println("The date's day number is: " + dayNumber);
      	System.out.println("The next date is: " + nextMonth + " " + nextDay + ", " + nextYear + "\n");






   }

}
Here's my final code, I fixed up a few things. The formatting seems to have been messed up by the code tags on the forum.
ZimbuTM is offline   Reply With Quote