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

Java 需要有人检查我的程序,我认为我的equals方法是错误的,java,boolean,variable-assignment,equals,Java,Boolean,Variable Assignment,Equals,我已经完成了这项任务,想知道是否有人可以检查一下,这样我就可以确保没有错误。看起来我在这些程序上很努力,但总是做错事。我在网上学习这门课程,所以我很难与老师沟通。我认为我的equals to方法可能是错误的,但是,当运行程序时,它们似乎没有错误,并且程序100%完成。请花点时间看一下,非常感谢您抽出时间 任务: 关于头等舱 创建一个名为RoomDimension的类,该类有两个字段:一个用于房间的长度,另一个用于宽度。RoomDimension类应该有两个构造函数:一个没有参数(默认设置),另一

我已经完成了这项任务,想知道是否有人可以检查一下,这样我就可以确保没有错误。看起来我在这些程序上很努力,但总是做错事。我在网上学习这门课程,所以我很难与老师沟通。我认为我的equals to方法可能是错误的,但是,当运行程序时,它们似乎没有错误,并且程序100%完成。请花点时间看一下,非常感谢您抽出时间

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

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

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

我的代码:

 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());

}

}equals方法必须有一个
对象
参数,并且您还必须重写
hashCode
方法

@Override
public boolean equals(Object obj)
{

}

我想说的是,对于
RoomDimension
,只有当长度和宽度匹配时,两个对象才是相等的。尤其是当你铺地毯时,即使总面积相同,4x5房间也会与1x20走廊大不相同。对于
房间地毯
对象,我猜只有当两个维度相等且价格相同时,才会再次相等

另外,我还将编写一些测试,因为您可能会对调用
roommatter
.equals()
方法(如上所述)时发生的情况感到惊讶


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

如果它通过了测试,是什么让你相信你的equals方法是错误的?@Greg Hewgill我想可能有更好的方法来表达它,或者我设置它的方式是错误的。唯一的问题是,我不知道她是想让我比较房间的宽度和长度,还是比较两个房间的尺寸。还有,如果有两个不同的物体需要比较或者什么?@Greg HewgillI我知道她有点没有意义,我不明白在我的平等陈述中,房间尺寸和房间地毯数据到底要比较什么(which是相同的,或者长度和宽度?覆盖哈希代码意味着什么?这不在章节中,IDK是什么意思。ThanksIt的意思是,但挂断它可能没有太大帮助。只需搜索“覆盖哈希代码并等于”玩得开心。但是如果他们在两个不同的班级,我该如何比较他们呢?对不起,你得更精确一些。什么是“他们”和“他们”?我想我明白我读错了什么,非常感谢你的帮助@greg Hewgill我不明白如何比较两个不同班级的长度和宽度