Нужен кто-то, чтобы проверить мою программу, я думаю, что мой метод равных является неправильным - PullRequest
0 голосов
/ 23 октября 2011

Я закончил с этим заданием, подумай, боже, и мне было интересно, если кто-нибудь может проверить это, чтобы я мог убедиться, что нет ошибок, кажется, что я усердно работаю над этими программами, но всегда делаю что-то не так.Я делаю этот курс онлайн, поэтому мне трудно общаться с инструктором.Я думаю, что мои методы equals to могут быть неправильными, но они, похоже, не содержат ошибок при запуске программы, и программа выполнена на 100%.Пожалуйста, найдите время, чтобы просмотреть его, и большое спасибо за ваше время.

Задание: о первом классе Создайте класс с именем RoomDimension, который имеет два поля: одно для длины комнаты, а другое дляширина.Класс RoomDimension должен иметь два конструктора: один без параметров (по умолчанию) и один с двумя параметрами.Класс должен иметь все соответствующие методы get и set, метод, который возвращает площадь комнаты, метод toString, который позволит нам печатать длину, ширину и площадь комнаты, и метод equals для сравнения размеров комнаты.

О втором классе Создайте другой класс с именем RoomCarpet, который имеет два поля: одно - объект RoomDimension, а другое - поле, в котором указана стоимость ковра на квадратный фут.Класс должен иметь два конструктора: один без параметров и один с двумя параметрами поля (RoomDimension и double).Класс должен иметь метод get и set для каждого поля, метод, который возвращает общую стоимость коврового покрытия комнаты, метод toString, который будет печатать всю информацию о комнате (длина, ширина, площадь) и стоимость ковра на квадратфут и общая стоимость коврового покрытия в комнате.(Суммы в долларах должны отображаться с двумя десятичными разрядами.) И метод equals, который сравнивает размеры комнаты и стоимость ковра.

О прикладной программе Напишите прикладную программу, которая содержит один объект 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 голосов
/ 23 октября 2011

Я бы сказал, что для RoomDimension два объекта равны, только если оба длины и ширины совпадают.Особенно, если вы укладываете ковер, комната 4х5 будет сильно отличаться от прихожей 1х20, даже если общая площадь будет одинаковой.Для объекта RoomCarpet, опять-таки равного, только если оба измерения равны и цена одинакова, я думаю.

Кроме того, я бы написал несколько тестов, потому что вы можете быть удивлены тем, что происходит, когда вы звонитеМетод RoomCarpet .equals() (как написано выше).

Наконец, обратите внимание на отступ, потому что это важно для любого читателя вашего кода.

0 голосов
/ 23 октября 2011

Метод equals должен иметь аргумент Object, и вам также необходимо переопределить метод hashCode.

@Override
public boolean equals(Object obj)
{

}
...