2017-04-20 32 views
0

我制作了一个程序,该程序是用java编写的一个酒店模拟程序,在此程序中,您将Rooms作为构造函数,并且我想打印最多2个构造函数字段(这更昂贵)。我知道如何使返回2价格的差异的方法,但我不知道如何打印哪些是最昂贵的...这是我的代码。构造函数字段最大数量java

主类

String RoomNumber, Category, View; 
    int NumberOfBeds; 
    double Price; 

    Room RoomA = new Room("C101",2,"Standard","Sea",95.89); 



    Scanner sc = new Scanner(System.in); 
    System.out.println("Give room number \n"); 
    RoomNumber=sc.next(); 
    System.out.println("Give number of beds \n"); 
    NumberOfBeds=sc.nextInt(); 
    System.out.println("Give category \n"); 
    Category=sc.next(); 
    System.out.println("Give view \n"); 
    View=sc.next(); 
    System.out.println("Give price \n"); 
    Price=sc.nextDouble(); 

    Room RoomB = new Room(RoomNumber, NumberOfBeds, Category, View, Price); 
    System.out.println(RoomA.toString()); 
    System.out.println(RoomB.toString()); 
    System.out.println(""); //this is the part I am struggling 

,这是我的房间级

public String RoomNumber; 
public int NumberOfBeds; 
private String Category; 
private String View; 
private double Price; 

    public Room(String RoomNumber, int NumberOfBeds, String Category, String View, double Price){ 
    RoomNumber = this.RoomNumber; 
    NumberOfBeds = this.NumberOfBeds; 
    Category = this.Category; 
    View = this.View; 
    Price = this.Price; 
} 


    public void setRoomNumber(String roomnumber){ 
    this.RoomNumber = roomnumber; 
} 
public String getRoomNumber(){ 
    return this.RoomNumber; 
} 

public void setNumberOfBeds(int numberofbeds){ 
    this.NumberOfBeds = numberofbeds; 
} 
public int getNumberOfBeds(){ 
    return this.NumberOfBeds; 
} 

public void setCategory(String category){ 
    this.Category = category; 
} 
public String getCategory(){ 
    return this.Category; 
} 

public void setView(String view){ 
    this.View = view; 
} 
public String getView(){ 
    return this.View; 
} 

public void setPrice(double price){ 
    this.Price = price; 
} 
public double getPrice(){ 
    return this.Price; 
} 


public double getPriceDifference(double double1, double double2){ 
    if (double1 > double2){ 

     return double1-double2; //and i know that here is the part i must add something 
    }else{ 
     return double2-double1; 
    } 
} 

@Override 
public String toString() { 
    return "Room number:" + this.RoomNumber + ",\n " 
      + "Number of beds:" + this.NumberOfBeds + ",\n " + "Category:" 
      + this.Category + ",\n " + "View:" + this.View + ",\n " + "Price:" + this.Price; 
} 

回答

0

我会鼓励你使用的房间外的方法来计算差价,因为它是商业逻辑。房间只能是数据持有者。将来它将扩大运营范围。

private static Room moreExpensiveRoom(Room room1, Room room2){ 
    return room1.getPrice() > room2.getPrice()? room1 : room2; 
} 

对于检查的价格差异,你可以使用Math.abs()方法:

private static double priceDifference(Room room1, Room room2){ 
    return Math.abs(room1.getPrice()- room2.getPrice()); 
} 

当你想比较两间客房以上,比你需要创建一个Comparator并使用排序房间列表,然后拿最大的价格。或使用流与max()

而最后:请阅读有关Java中的变量命名约定,所有的非静态变量应该与小写开始,驼峰仅保留类名。

+0

[PascalCase(https://en.wikipedia.org/wiki/PascalCase)为类,等等,[lowerCamelCase](https://en.wikipedia.org/wiki/Camel_case)用于方法,变量等。 – Kayaman

0
public Room getMostExpensive(ArrayList<Room> rooms) { 
    double max = 0d; 
    Room room = null; 
    for (Room room1 : rooms) { 
     if (max < room1.getPrice()) { 
      max = room1.getPrice(); 
      room = room1; 
     } 
    } 
    return room; 
} 

将此放在你的主类和调用方法时添加所有的房间作为参数列表