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