簡體   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