Sphere
Typer | Posted on | |
/*
@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;
}
}
}
}
}