[英]If statement not giving desired result
我创建了一个Hostel
类和一个Room
类,该Hostel
类包含一个ArrayList rooms
,此Arraylist中的一个值是Boolean available
。 在Hostel
类中,我创建了一个if语句,该语句应该显示ArrayList中boolean available
为true的任何条目,但是它显示所有值,包括available
为false的值,但现在已更改为true。 谁能告诉我我哪里出问题了。
public Room showAvail()
{
String theString = "Available Rooms";
if (Room.available == true)
for (Room room : rooms)
{
theString = theString + room.getRoomData() + "\n";
System.out.println(theString);
}
return null;
}
有几个问题:
似乎您已将变量Room.available
声明为静态变量,因此是类的一部分,而不是房间的一部分。 所有房间将共享相同的可用状态。
if语句在循环之外,因此对所有房间执行循环,或者根本不对任何房间执行循环
您声明要返回一个Room,但是始终返回null。 返回void或返回可用房间的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);
}
}
if
语句不合适。 尝试将其放入for
循环中。
由于您没有显示类声明,因此很难回答这个问题。
听起来好像您的if
语句需要在for循环内:
for (Room room : rooms)
{
if (room.available)
{
theString = theString + room.getRoomData() + "\n";
System.out.println(theString);
}
}
为此, available
字段必须是实例变量而不是静态变量,这可能是问题的症结所在。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.