我正在尝试用3个类来建模程序;酒店,客房和客人。我已经在网站上四处看看了,尽管有些问题很相似,但我并没有遇到过我的问题。我遇到的问题是我无法将特定的客人设置到特定的房间。我的代码如下:
class Hotel{
Room[] rooms;
Hotel() {
rooms = new Room[10];
Guest Rob = new Guest("Rob");
for (int j=0; j<rooms.length;j++){
rooms[j] = new Room(null);
}
}
Guest checkIn(Guest){
for (int i=0; i<rooms.length; i++){
if(rooms[i]!=null){
rooms[i] = Guest;
return;
}
}
}
public static void main(String[] args) {
new Hotel();
}
}
class Room{
Guest guest;
Room (Guest n){
this.guest = n;
}
}
class Guest{
String guestname;
Guest(String n) {
this.guestname = n;
}
}
就我现在而言。我设法创建了新的访客,但现在我希望能够检查房间中的空(从aray中的第一个房间开始),并将guest分配给null中的第一个房间。 我已经制定了一种方法,我相信可以做到这一点; checkIn(访客),但我不确定应该把什么放入实际设置(客人)到房间[i]。
非常感谢任何帮助。对于任何格式错误道歉,这是我在这里的第一篇文章。
亲切的问候,
罗布
答案 0 :(得分:2)
你应该在你的Room类中使用getter和setter。
然后,如果getGuest
返回null,则该房间可用,您可以使用新访客来呼叫setGuest
。
public Guest getGuest(){
return guest;
}
public void setGuest(Guest guest){
this.guest = guest;
}
您的签入方式可能是:
void checkIn(Guest guest){
for (int i=0; i<rooms.length; i++){
Room room = rooms[i];
if(room.getGuest() == null){
room.setGuest(guest);
return;
}
}
}
答案 1 :(得分:0)
Guest checkIn(Guest guest){
for(int i = 0; i < rooms.length; i++){
if(rooms[i] == null){
rooms[i] = new Room(guest);
return guest;
}
}
}
您似乎错过了一些Java(以及一般的OOP)命名约定。
Guest Rob = new Guest("Rob");
作为变量名称的Rob不应该大写。
this.guestname = n;
多个单词使用驼峰式约定,即guestName
。此外,您无需引用this.guestName
,您只需说guestName
即可。如果方法接受的参数也命名为this.guestName
,即guestName
,则只需使用this.guestName = guestName
。将guestName
字段设置为私有,也是。