Sphere

/*
@startuml

class Sphere {
    - radius : double
    + Sphere(r : double)
    + getRadius() : double
    + setRadius(r : double) : void
    + getSurfaceArea() : double
    + getVolume() : double
    + toString() : String
}

class SphereDriver {
    + main(args : String[]) : void
}

SphereDriver ..> Sphere : "creates and uses"
SphereDriver ..> java.util.Scanner : "gets user input"

@enduml
*/

import java.util.Scanner;

class Sphere {

    //Declare variable
    private double radius;

    //Constructor: sets up radius
    public Sphere(double r) {
        radius = r;
    }

    //Get method
    public double getRadius() {
        return radius;
    }

    //Set method
    public void setRadius(double r) {
        radius = r;
    }

    //Calculate surface area
    public double getSurfaceArea() {
        return 4 * Math.PI * Math.pow(radius, 2);
    }

    //Calculate volume
    public double getVolume() {
        return 4 * Math.PI * Math.pow(radius, 3) / 3;
    }

    //Override toString
    @Override
    public String toString() {
        String result = String.format("Radius: %,.2f\nSurface Area: %,.2f, Volume: %,.2f",
                +getRadius(), getSurfaceArea(), getVolume());
        return result;
    }
}

public class SphereDriver {

    public static void main(String[] args) {
        try (Scanner scan = new Scanner(System.in)) {
            while (true) {
                double r = 0;
                System.out.println("----------Welcome to the Sphere Applet.----------");
                while (true) {
                    System.out.println("Please input a positive number or 'bye' to quit.");
                    String input = scan.nextLine().trim();
                    if (input.matches("(?i).*(bye).*")) {
                        System.out.println("Goodbye.");
                        return;
                    }
                    try {
                        r = Double.parseDouble(input);
                        if (r > 0) {
                            break;
                        }
                    } catch (NumberFormatException e) {
                        System.out.println("Invalid input.");
                    }
                }
                Sphere sphere1 = new Sphere(r);
                System.out.println(sphere1);
                System.out.println("-------------------------------------------------");
                while (true) {
                    System.out.println("Do you want to play again? (y/n)");
                    String input = scan.nextLine().trim();
                    switch (input) {
                        case "n" -> {
                            System.out.println("Program ended. Goodbye.");
                            return;
                        }
                        case "y" -> {
                            break;
                        }
                        default -> {
                            System.out.println("Invalid input.");
                            continue;
                        }
                    }
                    break;
                }
            }
        }
    }
}
Scroll to Top