anandp773
anandp773

Reputation: 17

Finding the volume of a cylinder using a circle object

I'm supposed to find the volume of a cylinder using a Circle object I made in another class. When I create my getVolume method, it tells me I can't multiply a Circle and double, and wanted to know how to fix it. I can't make a getArea method in the Cylinder class, just make a new Circle using a user-inputted radius. Here's the code (first for the Circle class, and second the Cylinder class):

public class Circle {
  private double radius;

  public Circle(double r) {
  radius = r;
  }

  public double getArea() {
      return Math.PI * radius * radius;
  }
}

public class Cylinder {
  private Circle base;
  private double height;

  public Cylinder(double r, double h) {
    base = new Circle(r);
    height = h;
  }

  public double getVolume() {
    return base * height;
  }
}

So the getVolume method is my problem. How can I get the program to recognize "base" as a double while it is still a Circle object?

Upvotes: 0

Views: 3343

Answers (3)

ppeterka
ppeterka

Reputation: 20726

You wanted to write

 public double getVolume() {
   return base.getArea() * height;
  }

Right?

Otherwise, just by thinking of it: do you multiply a circle with a length? No, you multiply an area with a length to get the volume...

Also, if the circle would have a name attribute too, what should be multiplied? There is no magic, the JVM does what you tell it to do.

Upvotes: 3

Michael Hoyle
Michael Hoyle

Reputation: 239

return base.getArea() * height

Upvotes: 1

rgettman
rgettman

Reputation: 178293

You need to multiply the area of the circle by the height. But you can't multiply a Circle and a double. Call getArea() on your Circle.

return base.getArea() * height;

Upvotes: 1

Related Questions