2013-09-16 3 views
1

Это мой первый вопрос здесь, и я очень новичок в программировании, поэтому, пожалуйста, несите меня.Объект, возвращающий объект Java для вычисляемых переменных

Я беру класс java, и в своем текущем назначении мне нужно создать три экземпляра круга, вычислить их диаметры и области и напечатать значения. Предполагается, что первые два экземпляра имеют радиус, заданный методом setRadius, в то время как третий должен сохранять расчеты по умолчанию, основанные на радиусе 1.

Редактировать: Проблема заключается в следующем: первые два объекта, на который я использовал метод setRadius, вернул правильные значения, но третий был предназначен для возврата значений по умолчанию конструктора, и вместо этого он возвращал все нули.

Вот код, спасибо заранее!

//this class implements the Circle class 
public class TestCircle 
{ 
    public static void main(String[] args) 
    { 
     Circle Circle1 = new Circle(); 
     Circle Circle2 = new Circle(); 
     Circle Circle3 = new Circle(); 

     Circle1.setRadius(2); 
     Circle2.setRadius(10); 

     Circle1.display(); 
     Circle2.display(); 
     Circle3.display(); 
    } 
} 


import java.lang.Math.*; 
public class Circle 
{ 
double radius; 
double diameter; 
double area; 

    public void Circle() 
    { 
     radius = 1; 
     diameter = radius * 2; 
     area = (radius * radius) * Math.PI; 
    } 

    public void setRadius(double rad) 
    { 
     this.radius = rad; 
     diameter = radius * 2; 
     area = (radius * radius) * Math.PI; 
    } 


    public void display() 
    { 
     System.out.println("Radius: " + radius); 
     System.out.println("Diameter: " + diameter); 
     System.out.println("Area: " + area); 
    } 
} 
+0

Вы не говорите, в чем проблема, но ваше название подразумевает, что вы получаете нули для всех трех значений. Это верно? –

+0

Важная вещь здесь, когда вы задаете вопрос, - это * полностью * и * точно * указать симптомы (и * явно) спросить, почему эти симптомы видны). Целью этого сайта является * not *, чтобы служить в качестве услуги проверки кода. –

+0

Прошу прощения. Я полностью отказался от той части, где я собирался изложить эту проблему. Проблема заключалась в том, что третий экземпляр объекта, который должен был сохранить значения по умолчанию от конструктора, ничего не возвращает. В двух других случаях, когда радиус задан с помощью setRadius, отобразите правильные значения. – brock

ответ

4

Этот

public void Circle() 

это просто метод с типом void возврата. Для конструктора, вам нужно

public Circle() // notice there is no return type 

Потому что вы на самом деле не обеспечивают конструктор, следующий

Circle Circle1 = new Circle(); 
Circle Circle2 = new Circle(); 
Circle Circle3 = new Circle(); 

используется конструктор по умолчанию, предоставляемое компилятором. Он имеет пустое тело и, следовательно, значения поля все инициализируются по умолчанию 0.

И так как вы только звоните setRadius() на двух из них, в другом будет отображаться только 0.

Читайте о конструкторах here.


конвенция Java именование утверждает, что имена переменных должны начинаться с прописными буквами и следовать формату camelCase. Вы можете продолжить чтение по этому вопросу here.

+0

Конечно, это означало бы, что первые два случая вернули бы правильные значения (поскольку был вызван setRadius), но третий вернул бы 0 (без вызова setRadius). –

+0

+1 Также стоит сказать OP следовать соглашениям об именах Java. – arshajii

+0

@arshajii - Он сделал, в основном. Метод Circle был ошибкой кодирования, а не последовал за соглашением. –

Смежные вопросы