2016-02-27 86 views
0

,我决定写我的第一个Java程序,HotelPRO 创建类.Classes低于:与其他类

package hotelpro; 
public class Customer { 

    String name; 
    int PESEL; 
    Room room; 
} 

public class Room { 
    int RoomNo; 
    boolean Occupied=false; 
    Room(int RoomNo){ 
    this.RoomNo=RoomNo; 

    } 
} 

package hotelpro; 


public class HotelPro { 

    /** 
    * @param args the command line arguments 
    */ 
    public static void main(String[] args) { 

     Room[] rooms=new Room[10]; 
      for (int i=0;i<rooms.length;i++) 
      { 
      rooms[i]=new Room(i); 

      } 

      for (int i=0;i<rooms.length;i++){ 
      System.out.println(rooms[i].RoomNo); 
      System.out.println(rooms[i].Occupied); 
      } 




    } 

} 

所以基本上我创建了一个配有roomNumber,如果它的占领。 客户应该有一个名字,PESEL(波兰语ID)和一个房间(应该是Room类的一个构造函数?所以所有的客户都有一个房间(默认为0,这意味着没有房间))。你能让我知道该怎么做吗?我很确定我的代码是错误的。

+0

我不不明白你在问什么。您的代码似乎创建了10个空房间,并且是正确的。你想要示例代码来创建一个客户? – iullianr

+0

我在问如何创建一个正在将其他类作为其属性的类?所以客户对我来说是第一流的,我想给它分配一个空间。是这样做的正确的:public class Customer { String name; int PESEL; 房间房间; Customer(String name,int PESEL){this.name = name; this.PESEL = PESEL; this.room =新房(0); } – rafalbballer

+0

@rafalbballer是的,这将是创建一个客户的方式 –

回答

0

从您的评论中,我了解到您需要Customer的构造函数。这里是一个:

public class Customer { 
    String name; 
    int PESEL; 
    Room room; 

    // constructor for Customer with a room argument 
    Customer(String name,int PESEL, Room room) { 
     this.name=name; 
     this.PESEL=PESEL; 
     this.room = room; 
     } 
    } 

    // constructor for Customer with a default room, though impractical :) 
    Customer(String name,int PESEL) { 
     this.name=name; 
     this.PESEL=PESEL; 
     this.room = new Room(0); 
    } 
} 

根据传递给Customer的参数,正确的构造函数被调用。例如,创建具有分配给它的Room一个Customer对象,你可以这样做:

Room room = new Room(139); 
Customer c = new Customer("Customer1", 10, room); 

并创建具有缺省值0房间的顾客,你可以这样做:

Customer c = new Customer("Customer1", 10); 
+0

对我来说,看起来不像Java。相反,创建两个构造函数。一个有两个论点,一个有三个。 –

+0

你不应该使用默认房间,酒店里不会有这样的事情。如果客户没有空间,那么你不能容纳他。引入默认房间会导致出现奇怪的情况,即客户不在实际房间中,或者在房间号码为0的房间中不存在,因此代码变得越野车。 – iullianr

+0

@iullianr我知道。这是OP要求的。 –

0

做到这一点最简单的方法是添加一个构造函数类客户,将接收三个参数:

Customer(String name, int PESEL, Room room) {... } 

这是因为当你定义一个新的客户,你分配到你已经有了一个房间在酒店(没有占用),所以你应该从你拥有的房间列表中为他分配一个空房。

为了使代码更加健壮,您可以在构造函数中引入一个检查,以查看在将其分配给客户之前,作为参数接收的房间对象是否未被占用。如果它被占用,只是因为客户不能被占用的房间而引发异常。

如果房间参数为空,这可能意味着您只需注册想要预订的客户,并且您可能没有房间号。然而,根据空值使这个逻辑之王不是很好。最好只是建立一个不同的课程来模拟预订,而客户课程只会指实际获得房间的客户。