2013-10-08 2 views
0

Я должен найти объем цилиндра, используя объект Circle, который я сделал в другом классе. Когда я создаю метод getVolume, он говорит мне, что я не могу размножать круг и дважды, и хотел бы знать, как его исправить. Я не могу сделать метод getArea в классе Cylinder, просто создайте новый круг, используя радиус, введенный пользователем. Вот код (первый для класса Circle, а второй класс Cylinder):Поиск объема цилиндра с использованием объекта окружности

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; 
    } 
} 

Так что метод getVolume моя проблема. Как я могу заставить программу распознать «базу» как двойную, пока она еще является объектом Circle?

ответ

3

Вы хотели написать

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

правильно?

В противном случае, просто подумав об этом: вы умножаете круг с длиной? Нет, вы умножаете на область с длиной, чтобы получить объем ...

Кроме того, если бы у круга также был атрибут имени, что следует умножать? Магии нет, JVM делает то, что вы говорите.

+0

+1 за предоставление объяснения, а не просто патч. – pburka

1

Вам нужно умножить площадь круга на высоту. Но вы не можете умножить Circle и double. Позвоните getArea() на Circle.

return base.getArea() * height; 
Смежные вопросы