devuelve un nuevo ArrayList de MenuItems que contienen sólo los elementos de menú que están disponibles actualmente

fyidoctor:

Esto es lo que tengo hasta ahora

Estoy confundido sobre cómo comparar el uso de un método también he intentado 1. items.get (i) .Available () == true y también utilizando .equals

  public boolean available() { return myAvailability; } 

//método

  ArrayList<MenuItem> availableItems = new ArrayList<MenuItem>(items.size());
      int i = 0;
    while (i < availableItems.size())
    {
         boolean c = items.get(i).available();
        if (c == true)
        {
            availableItems.add(items.get(i));
            i++;
        }
        i++;

    }
    return  availableItems ;

//principal

ArrayList<MenuItem> items = new ArrayList<MenuItem>();
        items.add( new MenuItem( "Big Bad Burger", 9.95, 2.15, 1, false ) );
        items.add( new MenuItem( "Cheeky Chicken", 5.95, 0.75, 1, true ) );
        items.add( new MenuItem( "Wild Wings", 5.95, 0.50, 0, false ) );
        items.add( new MenuItem( "Flying Fish", 15.95, 7.61, 1, false ) );
        items.add( new MenuItem( "Igloo Icecream", 1.95, 0.28, 2, true ) );

        ArrayList<MenuItem> available = availableItems( items );
        System.out.println(available);

        // should list:
        // Cheeky Chicken ($5.95) and Igloo Icecream ($1.95)
        for ( MenuItem item : available )
          System.out.println( item.menuString() );
Reputación Farmer:

El error está aquí:

while (i < availableItems.size())

ya availableItems.size()es 0.

Las soluciones son:

  1. Utilice bucle foreach, como en otra respuesta
  2. utilizar removeIf:

    ArrayList<MenuItem> availableItems = new ArrayList<MenuItem>(items);
    availableItems.removeif(item -> !item.available());
    return availableItems;
    

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=224735&siteId=1
Recomendado
Clasificación