繁体   English   中英

如果语句未给出期望的结果

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM