Geometry Calculator

The problem

Design a Geometry class with the following methods:

  • A static method that accepts the radius of a circle and returns the area of the circle. Use the following formula:
    • Area = π * r * 2
    • Use Math.PI for π and r for the radius of the circle
  • A static method that accepts the length and width of a rectangle and returns the area of the rectangle. Use the following formula:
    • Area = Length x Width
  • A static method that accepts the length of a triangle’s base and the triangle’s height. The method should return the area of the triangle. Use the following formula:
    • Area = Base x Height x 0.5

The methods should display an error message if negative values are used for the circle’s radius, the rectangle’s length or width, or the triangle’s base or height.

Next write a program to test the class, which displays the following menu and responds to the user’s selection:

Geometry calculator:

  1. Calculate the Area of a Circle
  2. Calculate the Area of a Rectangle
  3. Calculate the Area of a Triangle
  4. Quit

Enter your choice (1-4):

Display an error message if the user enters a number outside the range of 1 through 4 when selecting an item from the menu.

Breaking it down

Geometry class

public static class Geometry {
    public static double areaOfCircle(double radius) {
        return Math.PI * radius * radius;
    }

    public static double areaOfRectangle(double length, double width) {
        return length * width;
    }

    public static double areaOfTriangle(double base, double h) {
        return base * h * 0.5;
    }
}

Main and user menu choice method

public static void main(String[] args) {

    int choice; // The user's menu choice

    do {
        // Get the user's menu choice.
        choice = getMenu();

        if (choice == 1) {
            calculateCircleArea();
        } else if (choice == 2) {
            calculateRectangleArea();
        } else if (choice == 3) {
            calculateTriangleArea();
        } else if (choice == 4) {
            System.out.println("Thanks for calculating!");
        }

    } while (choice != 4);
}

public static int getMenu() {

    int userChoice;

    // keyboard input
    Scanner keyboard = new Scanner(System.in);

    // Display the menu.
    System.out.println("Geometry Calculator\n");
    System.out.println("1. Calculate the Area of a Circle");
    System.out.println("2. Calculate the Area of a Rectangle");
    System.out.println("3. Calculate the Area of a Triangle");
    System.out.println("4. Quit\n");
    System.out.print("Enter your choice (1-4) : ");

    // get input from user
    userChoice = keyboard.nextInt();

    // validate input
    while (userChoice < 1 || userChoice > 4) {
        System.out.print("Please enter a valid range: 1, 2, 3, or 4: ");
        userChoice = keyboard.nextInt();
    }

    return userChoice;
}

Calculate Circle Area

public static void calculateCircleArea() {

    double radius;

    // Get input from user
    Scanner keyboard = new Scanner(System.in);
    System.out.print("What is the circle's radius? ");
    radius = keyboard.nextDouble();

    // Display output
    System.out.println("The circle's area is "
            + Geometry.areaOfCircle(radius));
}

Calculate Rectangle Area

public static void calculateRectangleArea() {
    double length;
    double width;

    // Get input from user
    Scanner keyboard = new Scanner(System.in);

    // Get length
    System.out.print("Enter length? ");
    length = keyboard.nextDouble();

    // Get width
    System.out.print("Enter width? ");
    width = keyboard.nextDouble();

    // Display output
    System.out.println("The rectangle's area is "
            + Geometry.areaOfRectangle(length, width));
}

Calculate Triangle Area

public static void calculateTriangleArea() {

    double base;
    double height;

    // Get input from user
    Scanner keyboard = new Scanner(System.in);

    // Get the base
    System.out.print("Enter length of the triangle's base? ");
    base = keyboard.nextDouble();

    // Get the height
    System.out.print("Enter triangle's height? ");
    height = keyboard.nextDouble();

    // Display the triangle's area.
    System.out.println("The triangle's area is "
            + Geometry.areaOfTriangle(base, height));
}

Output

Geometry Calculator

1. Calculate the Area of a Circle
2. Calculate the Area of a Rectangle
3. Calculate the Area of a Triangle
4. Quit

Enter your choice (1-4) : 1
What is the circle's radius? 10
The circle's area is 314.1592653589793
Geometry Calculator

1. Calculate the Area of a Circle
2. Calculate the Area of a Rectangle
3. Calculate the Area of a Triangle
4. Quit

Enter your choice (1-4) : 2
Enter length? 10
Enter width? 10
The rectangle's area is 100.0
Geometry Calculator

1. Calculate the Area of a Circle
2. Calculate the Area of a Rectangle
3. Calculate the Area of a Triangle
4. Quit

Enter your choice (1-4) : 3
Enter length of the triangle's base? 10
Enter triangle's height? 10
The triangle's area is 50.0
Geometry Calculator

1. Calculate the Area of a Circle
2. Calculate the Area of a Rectangle
3. Calculate the Area of a Triangle
4. Quit

Enter your choice (1-4) : 4
Thanks for calculating!

Level Up

  • Geometry calculations are common, examine if there is open source libraries or libraries within the JDK that perform these calculations. What are some reasons why you would to find a common library?
  • Write unit test for Geometry class