Функции круга не ведут себя должным образом в классе Java - PullRequest
1 голос
/ 03 мая 2009

поэтому я сделал класс окружности, который устанавливает радиус и должен вывести радиус, окружность и площадь, однако, если я введу радиус, радиус, окружность, площадь не будет выводиться обратно, он просто отобразится как 0.0 вот мой Circle.java

public class Circle
{
    private double radius;
    private double PI = 3.14159;

    public void setRadius(double rad)
    {
            radius = rad;
    }

    public double getRadius()
    {
            return radius;
    }

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

    public double getDiameter()
    {
            return 2 * radius;
    }

    public double getCircumference()
    {
            return 2 * PI * radius;
    }

}

и вот оно. Circledemo.java http://pastie.org/466414 -форматирование здесь не получилось

Сначала я ввожу радиус, но когда я вызываю getRadius, окружность, площадь, он просто выводит 0.0

Ответы [ 2 ]

5 голосов
/ 03 мая 2009

Давайте пройдемся по выполнению программы, шаг за шагом. Сначала вы инициализируете некоторые переменные, а затем создаете объект Scanner. Затем вы вводите цикл while. Внутри цикла while вы отображаете главное меню, читаете ввод с клавиатуры, создаете новый объект Circle , а затем обрабатывает полученный вами ввод. И вы продолжаете делать это до тех пор, пока flag не будет установлено на false, и в этом случае программа завершится.

Заметили здесь что-нибудь странное?

Переменная существует только внутри области, в которой она была объявлена, а ваш объект Circle был объявлен внутри цикла while. Помните, что тело цикла while представляет одну итерацию цикла while . Итак, по сути, ваш объект Circle снова и снова создается заново, поэтому setRadius() не имеет никакого эффекта.

1 голос
/ 03 мая 2009

Создайте экземпляр объекта Circle (то есть код Circle one = new Circle ()) ВНЕ цикла while. Каждая итерация цикла вызывает повторное создание объекта с новым состоянием (то есть новым радиусом).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...