Функции круга не ведут себя должным образом в классе Java
Вопрос
поэтому я создал класс окружности, который устанавливает радиус и должен вывести радиус, окружность и площадь, однако, если я введу радиус, радиус, окружность, площадь не будет выводиться обратно, он просто отобразится как 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. Каждая итерация цикла вызывает повторное создание объекта с новым состоянием (то есть новым радиусом).