【发布时间】:2016-10-19 12:42:52
【问题描述】:
我试图创建一个类 CircleClass,但我有一些我无法理解的错误。我可以寻求帮助吗?
import java.util.*;
public final class CircleClass
{
//class fields
private int diameter;
private double area;
/*Default Constructor
*IMPORT none
*EXPORT address of new CircleClass object
*ASSERTION area 0 diameter 0 is default
*/
public CircleClass()
{
area = 0.0;
diameter = 0;
}
/*copy constructor
*IMPORT inCircle (CircleClass)
*EXPORT address of new CircleClass object
*ASSERTION creates an object with an identical object state as the import
*/
public CircleClass(CircleClass inCircleClass)
{
area = inCircleClass.getArea ();
diameter = inCircleClass.getDiameter ();
}
/*alternate constructor
*IMPORT inDiameter (integer)
*EXPORT address of new Circle object
*ASSERTION creates an object if imports are valid or fails otherwise
*/
public CircleClass (int inDiameter)
{
if (validateNumber (inDiameter))
{
diameter = inDiameter;
area = calcArea (diameter);
}
else
{
throw new IllegalArgumentException("invalid value");
}
}
/*SUB setArea
*IMPORT area (real)
*EXPORT none
*ASSERTION sets the area if import is valid
*/
public void setArea (double area)
{
if (area >= 0.0)
{
area = inArea;
}
else
{
throw new IllegalArgumentException("invalid area value");
}
}
/*SUB setDiameter
*IMPORT inDiameter (integer)
*EXPORT none
*ASSERTION sets diater if valid
*/
public void setDiameter (int inDiameter)
{
if ( validateNumber(inDiameter))
{
diameter = inDiameter;
}
else
{
throw new IllegalArgumentException("invalid diameter");
}
}
//ACCESSORS
public int getDiameter ()
{
return diameter;
}
public double getArea ()
{
return area;
}
//SUB equals
//IMPORT diameter
//EXPORT same (boolean)
//ASSERTION same = true if diameter is same as inDiameter
public boolean equals (int diameter)
{
boolean same = false;
if (diameter == inDiameter)
{
same = true;
}
return same;
}
//SUB equals
//IMPORT inObject
//EXPORT same (booleana)
public boolean equals (Object inObject)
{
boolean same = false;
if (inObject instanceof CircleClass)
{
CircleClass inCircle = (CircleClass) inObject;
same = (diameter == inCircle.getDiameter);
}
}
//SUB clone
//IMPORT none
//EXPORT cloneCircleClass (Object)
//ASSERTION returns cloned object of current object
public Object clone ()
{
CircleClass cloneCircleClass;
cloneCircleClass = new CircleClass ( diameter, area);
return cloneCircleClass;
}
//PRIVATE SUB validateNumber
//IMPORT inDiameter
//EXPORT valid
//ASSERTION number should be gtreater or equal to 0
private boolean validateNumber (int inDiameter)
{
return (inDiameter >= 0);
}
//SUB calcArea
//IMPORT inDiameter
//EXPORT area
//ASSERTION calculates area
private boolean calcArea (int diameter)
{
double radius, area;
radius = (double)diameter / 2.0;
area = Math.PI * radius * radius;
return area;
}
}
我得到的错误是布尔值不能转换为双精度
查找符号错误
没有找到适合circleClass的构造函数
我是新制作类对象,所以我不知道最后一个错误是什么意思。感谢您的帮助
【问题讨论】:
-
1.
boolean calcArea,您返回area,一个double,但该方法需要一个boolean返回。 2.您的参数称为area而不是inArea。diameter和inDiameter相同。getDiameter也是一种方法,但您将其称为可访问变量。你忘了那里的括号getDiameter()。 3. 没有CircleClass(int, double)构造函数,所以你的clone方法不能在那里创建和返回一个新实例。要么创建一个,要么使用现有的一个。equals (Object inObject)没有return,但它需要return。
标签: java constructor accessor mutators