/**************************************************************************************************
* Program Name: Program #2: Conversion Chart
* Author: Terry Weiss
* Date: October 20, 2015
* Course/Section: CSC 111-003W
* Program Description:
* This program displays an inches-to-centimeters conversion table. The input is the smallest
* number of inches and then the largest number of inches to be converted. The program then
* displays the conversion for each 6-inch increment between the start and end numbers. The end
* number must be between 6 and 36 inches larger than the start number. One inch is equivalent to
* 2.54 centimeters. The program gives the option to run the program again.
**************************************************************************************************/
package weissprogram2;
import java.util.Scanner;
/*
* This class displays an inches-to-centimeters conversion table with 6-inch increments. One inch
* is equivalent to 2.54 centimeters.
*
* Input data:
* (int) startRange – This is the first inch to be converted
* (int) endRange – This is the highest possible inch to be converted
* (String) userContinues – This is the user’s response to whether they want to continue
* Output data:
* (int) inch – This is the current inch being converted
* (double) centimeter – This is the number of centimeters equivalent to the current inch being
* converted, which will be formatted to two decimal points
* Additional data:
* (final double) CONVERSION_RATE – This is the conversion rate between inches and centimeters
* (final int) INTERVAL – This is interval between each conversion
* (final int) MAX_RANGE – This is maximum size of the range
*
* Formulas:
* centimeter = inch * CONVERSION_RATE {centimeter = inch * 2.54}
*
* Initial Algorithm:
* Prompt for the start number until a positive number is given
* Prompt for the end number until a number within range is given
* Display the table header
* Calculate and display the conversion from inches to centimeters for each 6-inch increment
* in the range, formatted into the table
*/
public class WeissProgram2
{
/*
* This method displays an inches-to-centimeters conversion table. The input is the smallest
* number of inches and then the largest number of inches to be converted. The program then
* displays the conversion for each 6-inch increment between the start and end numbers. The end
* number must be between 6 and 36 inches larger than the start number. One inch is equivalent
* to 2.54 centimeters. The method gives the option to continue creating new tables.
*
* Refined Algorithm:
* DO
* min = 1
* max = maximum Integer – MAX_RANGE
* DO
* Prompt startRange
* IF startRange < min THEN
* Display error message about negative number
* ELSE IF startRange > max THEN
* Display error message about being too big
* END IF
* LOOP WHILE startRange < min OR startRange > max
*
* min = startRange + INTERVAL
* max = startRange + MAX_RANGE
* DO
* Prompt endRange
* IF endRange < min OR endRange > max THEN
* Display error message about being out of range
* END IF
* LOOP WHILE endRange < min OR max
*
*
* Display table header
* FOR inch = startRange TO endRange [STEP inch by INTERVAL]
* Calculate centimeter
* Display inch and centimeter, formatted to two decimals
* END FOR
*
*
* Prompt userContinues
* LOOP WHILE userContinues != “n” AND userContinues != “no”
*/
public static void main( String[] args )
{
/*
* This is the conversion rate between inches and centimeters
* Currently 2.54cm per inch
*/
final double CONVERSION_RATE = 2.54;
/*
* This is interval between each conversion in inches
*/
final int INTERVAL = 6;
/*
* This is maximum size of the range
*/
final int MAX_RANGE = 36;
/*
* This is the first inch to be converted
*/
int startRange;
/*
* This is the highest possible inch to be converted
*/
int endRange;
/*
* This is the smallest number in bounds for the current prompt
*/
int min;
/*
* This is the highest number in bounds for the current prompt
*/
int max;
/*
* This is the current inch being converted
*/
int inch;
/*
* This is the number of centimeters equivalent to the current inch being converted, which
* will be formatted to two decimal points
*/
double centimeter;
/*
* This is the user’s response to whether they want to continue
*/
String userContinues;
/*
* This object is used to capture the user's input
*/
Scanner user_input = new Scanner(System.in);
do //while User wants to continue
{
min = 1;
max = Integer.MAX_VALUE - MAX_RANGE;
do //while startRange is negative or too big
{
System.out.print("Please enter the first inch: ");
startRange = user_input.nextInt();
if (startRange < min)
{
System.out.print("That's a negative number. ");
} //end if startRange is negative
else if (startRange > max)
{
System.out.print("That's too big. ");
} //end else if startRange is too big
} while (startRange < min || startRange > max);
min = startRange + INTERVAL;
max = startRange + MAX_RANGE;
do //while endRange is too close to startRange or too big
{
System.out.print("Please enter the highest inch (between "
+ min + " and " + max + "): ");
endRange = user_input.nextInt();
if (endRange < min || endRange > max)
{
System.out.print("That's not in range. ");
} //end if endRange is out of bounds
} while (endRange < min || endRange > max);
// Display table header
System.out.println(""
+ " Conversion Chart\n"
+ " Inches Centimeters\n"
+ " ********** *************");
for (inch = startRange; inch <= endRange; inch += INTERVAL)
{
centimeter = inch * CONVERSION_RATE;
System.out.printf(" %10d %13.2f\n", inch, centimeter);
} //end for each interval in table
System.out.print("Would you like to create another table? ");
userContinues = user_input.next();
} while (!userContinues.equalsIgnoreCase("n") && !userContinues.equalsIgnoreCase("no"));
} //end method main
} //end class WeissProgram2
Comments