我目前有一个班级Room
和一个班级Hostel
,其中包含rooms = new ArrayList < Room >();
。然后我有一个BookRoomGUI
课程。
当房间被添加到arraylist时,它使用以下构造函数:
public Room(int newRoomNo, boolean newRoomEnSuite)
{
roomNo = newRoomNo;
roomEnSuite = newRoomEnSuite;
roomBooking = "Free";
roomNights = 0;
roomBooker = "No Booker";
}
在BookRoomGUI
类中,我有以下JTextFields:
fields.add(roomnumberJTextField);
fields.add(bookerJtextField);
fields.add(nightsJTextField);
fields.add(peoplenoJTextField);
我正在尝试在Hostel
中创建一个方法,该方法将获取这些文本字段的值,并在房间号匹配时更改原始构造函数中的相应变量:
public int makeBooking(int number)
{
for (Room room : rooms)
{
if (number == room.getRoomNo())
{
room.setRoomBooker(bookRoom.booker);
}
}
}
我的问题是if语句应该包含哪些内容?目前我使用booker = bookerJtextField.getText();
从BookRoomGUI
中的文本字段和Room
中的setRoomBooker中获取文本,但这不起作用,我会看到
Room中的setRoomBooker()无法应用于(java.lang.String)
答案 0 :(得分:2)
确保Room
中有以下方法:
public void setRoomBooker(String roomBooker) {
this.roomBooker = roomBooker;
}
现在,如果你看一下错误信息:
Room中的setRoomBooker()无法应用于(java.lang.String)
您可以看到,您的setRoomBooker()
方法当前未定义为采用java.lang.String
类型的参数(或任何参数)。
因此,您需要更改该方法的定义,以便您能够执行以下操作:
room.setRoomBooker(bookRoom.booker); //<-- You are passing it an argument of type String