【问题标题】:making a class of Circle with constructors, accessors and mutators使用构造函数、访问器和修改器创建一个 Circle 类
【发布时间】: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 而不是inAreadiameterinDiameter 相同。 getDiameter 也是一种方法,但您将其称为可访问变量。你忘了那里的括号getDiameter()。 3. 没有CircleClass(int, double) 构造函数,所以你的clone 方法不能在那里创建和返回一个新实例。要么创建一个,要么使用现有的一个。 equals (Object inObject) 没有 return,但它需要 return

标签: java constructor accessor mutators


【解决方案1】:
  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函数是正确的。看看你的,纠正别人的。

还有更多错误,但请尝试修复这些错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-12
    • 2020-02-02
    • 1970-01-01
    • 2010-09-20
    相关资源
    最近更新 更多