Если заявление не дает желаемого результата - PullRequest
0 голосов
/ 12 ноября 2011

Я создал класс Hostel и класс Room, класс Hostel содержит ArrayList rooms, одно значение в этом Arraylist - логическое значение available. В классе Hostel я создал оператор if, который должен показывать любую запись в ArrayList, где логическое значение available истинно, но вместо этого он показывает все значения, включая те, где available было ложно, но теперь было изменено на правда. может кто-нибудь сказать мне, где я ошибся.

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;
}

Ответы [ 3 ]

7 голосов
/ 12 ноября 2011

Есть несколько проблем:

  • Кажется, вы объявили переменную Room.available как статическую переменную, то есть как часть класса, а не комнат. Все номера будут иметь одинаковый доступный статус.

  • Оператор if находится за пределами цикла, поэтому цикл выполняется для всех комнат или вообще для всех комнат

  • Вы заявляете, что хотите вернуть комнату, но затем всегда возвращаете ноль. Либо верните 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);
       }
}
1 голос
/ 12 ноября 2011

Довольно сложно ответить на этот вопрос, так как вы не показали объявления классов.

Звучит так, как будто ваш оператор if должен находиться внутри цикла for:

for (Room room : rooms)
{
     if (room.available)
     {
         theString = theString + room.getRoomData() + "\n";
         System.out.println(theString);
     }
}

Чтобы это работало, поле available должно быть переменной экземпляра, а нестатическая переменная, и это, вероятно, суть вашей проблемы.

1 голос
/ 12 ноября 2011

Оператор if неуместен.Попробуйте поместить его в цикл for.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...