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.