brainfrz icon

Untitled

brainfrz | PRO | 10/10/15 06:50:58 PM UTC | 0 ⭐ | 876 👁️ | Never ⏰ | []
Java |

7.46 KB

|

None

|

0 👍

/

0 👎

/**************************************************************************************************
 *  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