2016-10-19 23 views
-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最后的错误意味着什么。感谢您的帮助

+0

1.'布尔calcArea',你返回'area',一个'double',但是这个方法需要一个'boolean'返回。 2.你的参数被称为'area'而不是'inArea'。 “直径”和“直径”一样。 'getDiameter'也是一种方法,但你称它为一个可访问的变量。你忘了那里的getDiameter()'。 3.没有'CircleClass(int,double)'构造函数,所以'clone'方法不能在那里创建并返回一个新的实例。要么创建一个,要么使用现有的一个。 'equals(Object inObject)'当它期望'return'时没有'return'。 – SomeJavaGuy

回答

0
  1. 您的功能boolean calcArea(int diameter)返回布尔值。应该只是double

  2. 您尚未创建这样public CircleClass (int diameter, gouble area) {}

  3. 在java中,最好是写{()(不换行)

    public void setArea(double area) { 
        if (area >= 0.0) { 
         this.area = area; 
        } else { 
         throw new IllegalArgumentException("invalid area value"); 
        } 
    } 
    

    这个setter函数构造是正确的。看看你的并纠正他人。

还有更多的错误,但尝试解决这些问题。

相关问题