我创建了一个Hostel
类和一个Room
类,Hostel
类包含一个ArrayList rooms
,此Arraylist中的一个值是布尔{{1} }。在available
类中,我创建了一个if语句,该语句应该显示在ArrayList中布尔值Hostel
为真的任何条目,而是显示所有值,包括available
为false的值,但现在已改为真。谁能告诉我哪里出错了?
available
答案 0 :(得分:7)
有一些问题:
您似乎已将变量Room.available
声明为静态变量,因此作为类的一部分,而不是房间的一部分。所有房间都将拥有相同的可用状态。
if语句在循环之外,因此对所有房间执行循环或根本不执行任何房间
您声明要返回一个房间,但是您总是返回null。返回无效或为可用房间返回List<Room>
。
您不需要测试if (variable == true)
,因为if (variable)
会做同样的事情,尽管它不会做任何手臂。 (方式)
为if语句使用花括号和缩进,以增加清晰度。 (方式)
这是一个代码片段。我不知道theString
是获得所有房间还是仅获得所有房间,第二种情况是将其移入if括号内。
for (Room room : rooms)
{
theString = theString + room.getRoomData() + "\n";
if (room.available) {
System.out.println(theString);
}
}
答案 1 :(得分:1)
if
声明不合适。尝试将其放入for
循环中。
答案 2 :(得分:1)
由于您没有显示类声明,因此很难回答这个问题。
听起来好像你的if
语句需要在for循环中:
for (Room room : rooms)
{
if (room.available)
{
theString = theString + room.getRoomData() + "\n";
System.out.println(theString);
}
}
为了使这个工作,available
字段需要是一个实例变量而不是一个静态变量,这可能是你问题的症结所在。