如果声明没有给出期望的结果

Dar*_*ess -1 java if-statement

我创建了一个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;
}
Run Code Online (Sandbox Code Playgroud)

sti*_*vlo 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);
       }
}
Run Code Online (Sandbox Code Playgroud)