Функции круга не ведут себя должным образом в классе Java

StackOverflow https://stackoverflow.com/questions/816226

  •  03-07-2019
  •  | 
  •  

Вопрос

поэтому я создал класс окружности, который устанавливает радиус и должен вывести радиус, окружность и площадь, однако, если я введу радиус, радиус, окружность, площадь не будет выводиться обратно, он просто отобразится как 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

Это было полезно?

Решение

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

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

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

Другие советы

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top