2016-10-19 6 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. 'boolean calcArea'、' area'、 'double'を返しますが、メソッドは' boolean'リターンを期待しています。あなたのパラメータは 'inArea'ではなく' area'と呼ばれます。 'diameter'と' inDiameter'と同じです。また、 'getDiameter'はメソッドですが、あなたはそれをアクセス可能な変数のように呼び出しています。 'getDiameter()'というパラメタを忘れてしまった。 3. CircleClass(int、double)コンストラクタは存在しないので、 'clone'メソッドはそこで新しいインスタンスを作成して返すことができません。作成するか、既存のものを使用してください。 'equals(Object inObject)'は 'return'を期待している間に' return'を持っていません。 – SomeJavaGuy

答えて

0
  1. あなたの関数boolean calcArea(int diameter)はブール値を返しています。あなたは{()(ない新しい行から)

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

    後にこのセッター関数を記述した方がよいJavaではこのpublic CircleClass (int diameter, gouble area) {}

  2. のようなコンストラクタを作成していないだけでdouble

  3. する必要があります正しい。あなたのことを見て、他のものを訂正してください。

さらに多くの間違いがありますが、これを修正してください。

関連する問題