Files
Coleman-Code/COM107/Midterm/$12Days.java
T

258 lines
10 KiB
Java

/******************************************************************************
* Project: Midterm COM 107 *
* Class Name: $12Days *
* Author: Amrit Panesar -ASP ,o/ *
* Last Edited: 09/06/2012 *
* Hours: 1.25 Hours *
* Purpose: Creating an application that exhibit adherence to best *
* programming practices. Effective application documentation, *
* Effective use of whitespace for ease in software maintenance, *
* Selection of appropriate data types using meaningful, *
* conventional identifiers, Appropriate use of error handling, *
* Creating simple and complex Boolean expressions to evaluate *
* primitives and strings, Developing a single and dual *
* alternative selection structures and linear selection *
* structures, Using test cases to validate application output. *
* *
******************************************************************************/
import java.util.*;
public class $12Days
{
public static void main(String[] args) // main
{
// english words for possessive numbers.
String sDay01 = "first", sDay02 = "second", sDay03 = "third",
sDay04 = "fourth", sDay05 = "fifth", sDay06 = "sixth",
sDay07 = "seventh", sDay08 = "eighth", sDay09 ="nineth",
sDay10 = "tenth", sDay11 = "eleventh", sDay12 = "twelfth";
// actual verse.
String sGift01 = "partridge in a pear tree",
sGift02 = "turtle doves", sGift03 = "French hens",
sGift04 = "calling birds", sGift05 = "golden rings",
sGift06 = "geese a-laying", sGift07 = "swans a-swimming",
sGift08 = "maids a-milking", sGift09 = "ladies dancing",
sGift10 = "lords a-leaping", sGift11 = "pipers piping",
sGift12 = "drummers drumming";
// first part of verse.
String sNum01 = "And a ", sNum02 = "Two ", sNum03 = "Three ",
sNum04 = "Four ", sNum05 = "Five ", sNum06 = "Six ",
sNum07 = "Seven ", sNum08 = "Eight ", sNum09 = "Nine ",
sNum10 = "Ten ", sNum11 = "Eleven ", sNum12 = "Twelve ";
//various strings that assisted with my switch structure below below.
String sSoR01 = "On the ",
sSor02 = " day of Christmas,\nmy true love sent to me\n",
sFNum01 = "A ", // special case for the first instance of day 1
sC = ",\n", // common line break
sP = ".", // last line ending
sE = "!"; // special case for *very* last line (day 12).
int iDay = 0; // start with an unsupported day, ensures validated input
Scanner console = new Scanner(System.in); // prompt user for input
System.out.print("What day of Chistmas are we on?\n"
+ "Please enter the day number.\n"
+ ":");
String sInput = console.nextLine(); // Grab string input.
System.out.println(" "); // just for visual appeal.
try
{
iDay = Integer.parseInt(sInput); // see if we can parse an integer
}
catch (NumberFormatException ex) // bad input, not a number
{
System.out.println("We're sorry, \""+sInput+"\" was an invalid day.\n"
+ "Please re-run the program.");
System.exit(1); // error out here. bad input.
}
if (iDay <= 0 || iDay > 12) // not a number we support. only days 1-12;
{
System.out.println("We're sorry, \""+sInput+"\" was an invalid day.\n"
+ "Please re-run the program.");
System.exit(2); // error out here, bad input, unsupported number.
}
//this would be much easier if we knew iteration.
String sOut = ""; // output buffer.
switch (iDay)
{
case 1:
sOut += sSoR01+sDay01+sSor02;
sOut += sFNum01+sGift01+sP;
break;
case 2:
sOut += sSoR01+sDay02+sSor02;
sOut += sNum02+sGift02+sC;
sOut += sNum01+sGift01+sP;
break;
case 3:
sOut += sSoR01+sDay03+sSor02;
sOut += sNum03+sGift03+sC;
sOut += sNum02+sGift02+sC;
sOut += sNum01+sGift01+sP;
break;
case 4:
sOut += sSoR01+sDay04+sSor02;
sOut += sNum04+sGift04+sC;
sOut += sNum03+sGift03+sC;
sOut += sNum02+sGift02+sC;
sOut += sNum01+sGift01+sP;
break;
case 5:
sOut += sSoR01+sDay05+sSor02;
sOut += sNum05+sGift05+sC;
sOut += sNum04+sGift04+sC;
sOut += sNum03+sGift03+sC;
sOut += sNum02+sGift02+sC;
sOut += sNum01+sGift01+sP;
break;
case 6:
sOut += sSoR01+sDay06+sSor02;
sOut += sNum06+sGift06+sC;
sOut += sNum05+sGift05+sC;
sOut += sNum04+sGift04+sC;
sOut += sNum03+sGift03+sC;
sOut += sNum02+sGift02+sC;
sOut += sNum01+sGift01+sP;
break;
case 7:
sOut += sSoR01+sDay07+sSor02;
sOut += sNum07+sGift07+sC;
sOut += sNum06+sGift06+sC;
sOut += sNum05+sGift05+sC;
sOut += sNum04+sGift04+sC;
sOut += sNum03+sGift03+sC;
sOut += sNum02+sGift02+sC;
sOut += sNum01+sGift01+sP;
break;
case 8:
sOut += sSoR01+sDay08+sSor02;
sOut += sNum08+sGift08+sC;
sOut += sNum07+sGift07+sC;
sOut += sNum06+sGift06+sC;
sOut += sNum05+sGift05+sC;
sOut += sNum04+sGift04+sC;
sOut += sNum03+sGift03+sC;
sOut += sNum02+sGift02+sC;
sOut += sNum01+sGift01+sP;
break;
case 9:
sOut += sSoR01+sDay09+sSor02;
sOut += sNum09+sGift09+sC;
sOut += sNum08+sGift08+sC;
sOut += sNum07+sGift07+sC;
sOut += sNum06+sGift06+sC;
sOut += sNum05+sGift05+sC;
sOut += sNum04+sGift04+sC;
sOut += sNum03+sGift03+sC;
sOut += sNum02+sGift02+sC;
sOut += sNum01+sGift01+sP;
break;
case 10:
sOut += sSoR01+sDay10+sSor02;
sOut += sNum10+sGift10+sC;
sOut += sNum09+sGift09+sC;
sOut += sNum08+sGift08+sC;
sOut += sNum07+sGift07+sC;
sOut += sNum06+sGift06+sC;
sOut += sNum05+sGift05+sC;
sOut += sNum04+sGift04+sC;
sOut += sNum03+sGift03+sC;
sOut += sNum02+sGift02+sC;
sOut += sNum01+sGift01+sP;
break;
case 11:
sOut += sSoR01+sDay11+sSor02;
sOut += sNum11+sGift11+sC;
sOut += sNum10+sGift10+sC;
sOut += sNum09+sGift09+sC;
sOut += sNum08+sGift08+sC;
sOut += sNum07+sGift07+sC;
sOut += sNum06+sGift06+sC;
sOut += sNum05+sGift05+sC;
sOut += sNum04+sGift04+sC;
sOut += sNum03+sGift03+sC;
sOut += sNum02+sGift02+sC;
sOut += sNum01+sGift01+sP;
break;
case 12:
sOut += sSoR01+sDay12+sSor02;
sOut += sNum12+sGift12+sC;
sOut += sNum11+sGift11+sC;
sOut += sNum10+sGift10+sC;
sOut += sNum09+sGift09+sC;
sOut += sNum08+sGift08+sC;
sOut += sNum07+sGift07+sC;
sOut += sNum06+sGift06+sC;
sOut += sNum05+sGift05+sC;
sOut += sNum04+sGift04+sC;
sOut += sNum03+sGift03+sC;
sOut += sNum02+sGift02+sC;
sOut += sNum01+sGift01+sE;
break;
}
System.out.println(sOut); // print buffer.
System.exit(0); // we're done.
}
}
/*Program Output:
S:\programs\Mod1\Midterm>java $12Days
What day of Chistmas are we on?
Please enter the day number.
:11
On the eleventh day of Christmas,
my true love sent to me
Eleven pipers piping,
Ten lords a-leaping,
Nine ladies dancing,
Eight maids a-milking,
Seven swans a-swimming,
Six geese a-laying,
Five golden rings,
Four calling birds,
Three French hens,
Two turtle doves,
And a partridge in a pear tree.
S:\programs\Mod1\Midterm>java $12Days
What day of Chistmas are we on?
Please enter the day number.
:2
On the second day of Christmas,
my true love sent to me
Two turtle doves,
And a partridge in a pear tree.
S:\programs\Mod1\Midterm>java $12Days
What day of Chistmas are we on?
Please enter the day number.
:invalid input
We're sorry, "invalid input" was an invalid day.
Please re-run the program.
S:\programs\Mod1\Midterm>java $12Days
What day of Chistmas are we on?
Please enter the day number.
:5
On the fifth day of Christmas,
my true love sent to me
Five golden rings,
Four calling birds,
Three French hens,
Two turtle doves,
And a partridge in a pear tree.
*/