質問:小道の長さと幅の2つのフィールドを持つLandTractクラスを作成します。クラスには、tractの領域を返すメソッドと、equalsメソッドとtoStringメソッドが必要です。 2つの地域の面積を入力するようにプログラムに指示します。プログラムは、各土地の面積を表示し、その土地の面積が等しいかどうかを示す必要があります。同じオブジェクトの均等性?
LandTractクラス
public class LandTract {
private double width,
length;
public LandTract(double width, double length) {
this.width = width;
this.length = length;
}
public double getLength() {
return length;
}
public LandTract(double length) {
this.length = length;
}
public double tractArea(double width, double length) {
return width * length;
}
public String equal(LandTract zt, LandTract lt){
String dec;
if(zt.equals(lt)){
dec ="yes";
}else dec="NO";
return dec;
}
public String toString(){
return "Area is " + width*length;
}
}
DemoTractクラス
import java.util.Scanner;
public class DemoTract {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println("Please Enter First Tract Width");
double width=scan.nextDouble();
System.out.println("Please Eter First Trach Length ?");
double length=scan.nextDouble();
LandTract lt1 = new LandTract(width,length);
System.out.println("Please Enter Secont Tract Width");
double width2=scan.nextDouble();
System.out.println("Please Enter Secoinf Tract Length");
double length2 = scan.nextDouble();
LandTract lt2 = new LandTract(width2,length2);
System.out.println("First Tract " + lt1);
System.out.println("Secon Tract "+ lt2);
System.out.println(lt2.equal(lt1, lt2));
}
}
オブジェクトはいつも、私の何が問題になって偽のでしょうか?
また、tractAreaは引数を取るべきではありません。LandTractの領域を返すことになっています。あなたの等価なメソッドは単一の引数をとるべきです:LandTract(すなわち 'this')を別のものと比較することになっています。また、Stringではなくブール値を返す必要があります。最後に、等しい方法のポイントは、 'this'の幅と高さを他のLandTractの幅と高さと比較することです。 equals()はそれをしません(あなたが平均化されていれば、そうするでしょう)。 –
'LandTract'は' boolean'を返す 'Object#equals(Object obj)'をオーバーライドする必要があります。現在、 'zt.equals(lt)'は、 'LandTract' *参照(正確な用語を覚えることはできません)の間の等価性をチェックしている' Object'の '.equals(...)'メソッドを使用しています。 –
「等しいサイズ」とはどういう意味ですか?寸法は同じでなければならないのですか?領域が等しいかどうかを確認することが問題であれば、それに対して 'equals'メソッドを使うのは良いことではありません。 'equals'は、2つのオブジェクトの公に利用可能な特性(何らかの定義による)がすべて同じである場合にのみ真となり、ここで長さは公に利用可能です。ここでは、単純に 'zt.tractArea()== lt.tractArea()'がほしいと思う、あるいは浮動小数点精度の問題を避けるためにイプシロンと比較するかもしれません。 – ajb