java - 返回一个新的 MenuItems ArrayList,其中仅包含当前可用的那些菜单项
问题描述
这就是我到目前为止所拥有的
我对如何使用我也尝试过的方法进行比较感到困惑 1. items.get(i).available() == true 并且还使用 .equals
public boolean available() { return myAvailability; }
//方法
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 ;
//主要的
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() );
解决方案
错误在这里:
while (i < availableItems.size())
因为availableItems.size()
是0。
解决方案是:
- 使用 foreach 循环,如另一个答案
使用
removeIf
:ArrayList<MenuItem> availableItems = new ArrayList<MenuItem>(items); availableItems.removeif(item -> !item.available()); return availableItems;
推荐阅读
- bootstrap-4 - 使用 Bootstrap 4 在带有图标的输入组内堆叠 2 个输入?
- c# - 如何在我的国际象棋游戏中修复这个在棋子上出现移动的错误?
- python - 使用 spaCy 将列表中的复杂名词短语分块并生成扩充列表
- matlab - Does symbol capitalization matter in object files with a linked dll?
- c++ - GDB loads unfindable script on shell start
- python - 使用 Python 在 S3 中打开和保存 excel 文件
- regex - 使用 LaTeX $sim$ -> $\sim$ 查找和替换所有找到的文件中的字符串
- python-3.x - 如何保存格式化的字符串?
- c# - 如何在 c# 中从 sql 中检索特定数据?
- sql - 有没有办法将随机数插入到已经存在的表中?