Вот мой код: то, что я хочу сделать, это то, что на выходе у меня цветной дисплей для первого круга, но не для круга 2, и я не уверен, почему. Может кто-то помочь мне с этим?

Вот мой первый набор кода:

 public class Circle
 {
 private double radius;
 private String color;

 public Circle()
 {
   radius = 1.0;
   color = "red";
}

public Circle(double newRadius)
{ 
    radius = newRadius;
}

public double getRadius()
{
    return radius;
}

public double getArea()
{ double ar = Math.PI * radius * radius;

    // round the area up to two decimals
    ar = Math.round(ar * 100.0) / 100.0;

    return ar;
} 
public Circle (String newColor){
   color = newColor;
}
public String getColor(){

   return color;
 }
}

Вот вторая часть с основным методом:

 public class TestCircle
  {
 public static void main(String[] args)
 {
   Circle cir1 = new Circle();

   System.out.println("Details of circle 1:");
   System.out.println("Radius: " + cir1.getRadius());
   System.out.println("Area: " + cir1.getArea());
   System.out.println("Color: " + cir1.getColor());

   Circle cir2 = new Circle(5);
   System.out.println("******************************");
   System.out.println("Details of circle 2:");
   System.out.println("Radius: " + cir2.getRadius());
   System.out.println("Area: " + cir2.getArea());
   System.out.println("Color: " + cir2.getColor());

}
}

Вот результат:

Детали круга 1:

Радиус: 1.0

Площадь: 3.14

Красный цвет


Детали круга 2:

Радиус: 5.0

Площадь: 78.54

Цвет: null

0
sluger233 2 Май 2014 в 17:02

3 ответа

Лучший ответ

Это происходит потому, что вы устанавливаете цвет только в одном из ваших конструкторов. Поэтому, когда вы создаете объект, такой как cir2, используя второй конструктор, цвет не устанавливается.

Чтобы исправить это, добавьте строку во второй конструктор, чтобы установить цвет. Может это могло быть так.

public Circle(double newRadius)
{ 
    radius = newRadius;
    color = "blue";
}
0
Dawood ibn Kareem 2 Май 2014 в 13:03

Ваш второй круг использует конструктор

public Circle(double newRadius)
{ 
    radius = newRadius;
}

Который не назначает цвет.

Я не уверен, что вы хотели, чтобы ваш метод newColor был конструктором. Вероятно, вам понадобится сеттер для цвета:

public void setColor(String newColor) {
    this.color = newColor
}

Имея это на месте, вы можете сделать что-то вроде:

Circle cir2 = new Circle(5);
cir2.setColor("red")
System.out.println("Color: " + cir2.getColor());

Или, если вы хотите, чтобы он работал как cir1, добавьте также назначение цвета двойному конструктору.

1
keyser 2 Май 2014 в 13:03

Вы обведете 2, используя конструктор ниже, и он не имеет ссылки на установку цвета .... где, как это делает конструктор по умолчанию.

public Circle(double newRadius)
{ 
    radius = newRadius;
}

На мой взгляд, вы можете добавить в этот конструктор еще один параметр для получения значения цвета в соответствии с предпочтениями пользователя.

0
bonCodigo 2 Май 2014 в 13:04