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:
- Utilice bucle foreach, como en otra respuesta
utilizar
removeIf
:ArrayList<MenuItem> availableItems = new ArrayList<MenuItem>(items); availableItems.removeif(item -> !item.available()); return availableItems;