如何将对象分配给另一个对象

时间:2016-01-11 16:15:09

标签: java object

我正在尝试用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]。

非常感谢任何帮助。对于任何格式错误道歉,这是我在这里的第一篇文章。

亲切的问候,

罗布

2 个答案:

答案 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字段设置为私有,也是。