需要有人检查我的程序,我认为我的equals方法是错误的

时间:2011-10-23 06:02:38

标签: java boolean variable-assignment equals

我完成了这个任务认为上帝,并想知道是否有人可以请检查它,所以我可以确保没有错误,似乎我努力这些程序,但总是做错了。我在网上做这个课程,所以我很难与教练沟通。我认为我的等于方法可能是错误的,但是,它们在运行程序时似乎没有错误,程序是100%完成的。请花点时间仔细看看,非常感谢你的时间。

分配: 关于头等舱 创建一个名为RoomDimension的类,它有两个字段:一个用于房间的长度,另一个用于宽度。 RoomDimension类应该有两个构造函数:一个没有参数(默认),另一个有两个参数。该类应具有所有适当的get和set方法,返回房间区域的方法,允许我们打印房间长度,宽度和面积的toString方法以及比较房间尺寸的equals方法。

关于第二节课 创建另一个名为RoomCarpet的类,它有两个字段:一个是RoomDimension对象,另一个是保存每平方英尺地毯成本的字段。该类应该有两个构造函数:一个没有参数,另一个带有两个字段参数(RoomDimension和double)。该类应该为每个字段设置一个get和set方法,一个返回房间地毯总费用的方法,一个toString方法,它将打印所有房间信息(长度,宽度,面积)和每平方的地毯成本脚和房间地毯的总费用。 (美元金额应显示两位小数。),以及一种比较房间尺寸和地毯成本的等于方法。

关于应用程序 编写一个包含一个RoomDimension对象和一个RoomCarpet对象的应用程序。该程序应允许用户输入房间的长度和宽度以及每平方英尺的地毯成本。程序应该实例化两个对象并使用简单的System.out.println语句来打印有关RoomCarpet对象的所有信息。

我的代码:

 import java.text.DecimalFormat;


  public class RoomCarpet { 

    private RoomDimension rmSize;
    private double pricePerSqFt;


    //default constructor
    public RoomCarpet()
    {
        this.rmSize = new RoomDimension();
        this.pricePerSqFt = 0.00;
    }
    //parameters constructor
    public RoomCarpet(RoomDimension rmSize, double pricePerSqFt)
    {
        this.rmSize = new RoomDimension(rmSize.getRmLength(),rmSize.getRmWidth());
        this.pricePerSqFt = pricePerSqFt;
    }
    //accessor methods
    public RoomDimension getRmSize()
    {
        return new RoomDimension(rmSize.getRmLength(),rmSize.getRmWidth());
    }
    public double getPricePerSqFt()
    {
        return this.pricePerSqFt;
    }
    // mutator methods  
    public void setRmSize(RoomDimension rmSize)
    {
        this.rmSize = new RoomDimension(rmSize.getRmLength(), rmSize.getRmWidth());
    }
    public void setPricePerSqFt(double pricePerSqFt)
    {

        this.pricePerSqFt = pricePerSqFt;
    }
    // Or price for the room to be carpeted
    public double rmTotalCost() 
    {
        return rmSize.getAreaRoom() * pricePerSqFt;     
    }
    //toString method
    public String toString()
     {
        DecimalFormat dollar = new DecimalFormat("$#,##0.00");
        String str = this.rmSize.toString() + " Price per sq. ft : " +dollar.format(pricePerSqFt) + " Price to carpet Room: " + dollar.format(rmTotalCost()) +   '\n';
        return str;
    }

    public boolean equals(RoomCarpet object2)
    {
        boolean  status;
        if ((this.equals(object2)==true)&&(this.pricePerSqFt==object2.pricePerSqFt))
        status = true;
        else 
        status = false;
        return status;
    }


 }


 public class RoomDimension {
    private int rmLength;
    private int rmWidth;

    //Default constructor
    public RoomDimension()
    {
        rmLength=0;
        rmLength=0;
    }
    // constructor with parameters
    public RoomDimension(int rmLength, int rmWidth)
    {
        this.rmLength=rmLength;
        this.rmWidth=rmWidth;
    }

    // accessor methods
    public int getRmLength()
    {
        return this.rmLength;
    }
    public int getRmWidth()
    {
        return this.rmWidth;
    }
    //mutator methods
    public void setRmLength(int rmLength)
    {
        this.rmLength=rmLength;
     }
    public void setRmWidth(int rmWidth)
    {
        this.rmWidth =rmWidth;
    }
    //area of the room
    public int getAreaRoom()
    {
        return this.rmLength * this.rmWidth;
    }

    //toString Method
      public String toString()
    {
        String str = "Room Length: " + this.rmLength + " Room Width: " + this.rmWidth + " Area of Room: " + this.getAreaRoom();
        return str;
    }

    public boolean equals(RoomDimension object2)
{
        boolean status;
        if (this.getAreaRoom() == object2.getAreaRoom())
            status = true;
        else
            status = false;
        return status;
    }



}  

import java.util.Scanner;


public class CarpetPrice {

    public static void main(String[] args)
    {
        RoomDimension rmSize;
        RoomCarpet  rmCarpet;

        Scanner keyboard = new Scanner(System.in);

        rmSize=new RoomDimension();
    System.out.println(" Please enter the length of the room: ");
    int rmLength= keyboard.nextInt();
    rmSize.setRmLength(rmLength);

    System.out.println("Please enter the rooms width: ");
    int rmWidth = keyboard.nextInt();
    rmSize.setRmWidth(rmWidth);


    System.out.println("Please enter the price per sq foot: ");
    double pricePerSqFt = keyboard.nextDouble();
    rmCarpet = new RoomCarpet(rmSize, pricePerSqFt);

    System.out.println("\n"+rmCarpet.toString());

}

}

2 个答案:

答案 0 :(得分:0)

equals方法必须包含Object参数,您还必须覆盖hashCode方法。

@Override
public boolean equals(Object obj)
{

}

答案 1 :(得分:0)

我想说,对于RoomDimension,只有当 长度和宽度匹配时,两个对象才相等。特别是如果你正在铺设地毯,4x5的房间将与1x20的走廊大不相同,即使总面积相同。对于RoomCarpet对象,只有当两个维度相等且价格相同时才会相等,我猜。

另外,我会写一些测试,因为当你调用RoomCarpet的{​​{1}}方法(如上所述)时,你会感到惊讶。

最后,请注意您的缩进,因为这对您的代码的任何读者都很重要。