-2
即时尝试创建一个类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;
}
}
我得到的错误是布尔不能被转换为double
发现符号错误
,并发现circleClass
没有合适的构造即时通讯新制作类的对象,所以我不idead最后的错误意味着什么。感谢您的帮助
1.'布尔calcArea',你返回'area',一个'double',但是这个方法需要一个'boolean'返回。 2.你的参数被称为'area'而不是'inArea'。 “直径”和“直径”一样。 'getDiameter'也是一种方法,但你称它为一个可访问的变量。你忘了那里的getDiameter()'。 3.没有'CircleClass(int,double)'构造函数,所以'clone'方法不能在那里创建并返回一个新的实例。要么创建一个,要么使用现有的一个。 'equals(Object inObject)'当它期望'return'时没有'return'。 – SomeJavaGuy