与其他类
,我决定写我的第一个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,这意味着没有房间))。你能让我知道该怎么做吗?我很确定我的代码是错误的。
从您的评论中,我了解到您需要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);
对我来说,看起来不像Java。相反,创建两个构造函数。一个有两个论点,一个有三个。 –
你不应该使用默认房间,酒店里不会有这样的事情。如果客户没有空间,那么你不能容纳他。引入默认房间会导致出现奇怪的情况,即客户不在实际房间中,或者在房间号码为0的房间中不存在,因此代码变得越野车。 – iullianr
@iullianr我知道。这是OP要求的。 –
做到这一点最简单的方法是添加一个构造函数类客户,将接收三个参数:
Customer(String name, int PESEL, Room room) {... }
这是因为当你定义一个新的客户,你分配到你已经有了一个房间在酒店(没有占用),所以你应该从你拥有的房间列表中为他分配一个空房。
为了使代码更加健壮,您可以在构造函数中引入一个检查,以查看在将其分配给客户之前,作为参数接收的房间对象是否未被占用。如果它被占用,只是因为客户不能被占用的房间而引发异常。
如果房间参数为空,这可能意味着您只需注册想要预订的客户,并且您可能没有房间号。然而,根据空值使这个逻辑之王不是很好。最好只是建立一个不同的课程来模拟预订,而客户课程只会指实际获得房间的客户。
我不不明白你在问什么。您的代码似乎创建了10个空房间,并且是正确的。你想要示例代码来创建一个客户? – iullianr
我在问如何创建一个正在将其他类作为其属性的类?所以客户对我来说是第一流的,我想给它分配一个空间。是这样做的正确的:public class Customer { String name; int PESEL; 房间房间; Customer(String name,int PESEL){this.name = name; this.PESEL = PESEL; this.room =新房(0); } – rafalbballer
@rafalbballer是的,这将是创建一个客户的方式 –