我正在尝试确定用户购物车中最受欢迎的两个商品。
每次用户在购物车中添加或删除项目时,updatePopularity(Item item)
都会调用一个函数,该函数会传递一个引用已更新对象的单个参数。这是代码片段:
private void updatePopularity(InventoryItem item)
{
InventoryItem tempItem;
if (mostPopular == null)
{
if (item.count > 0)
{
mostPopular = item;
mostPopularLabel.setText(MOST_POPULAR + " " + item.name);
}
}
else if (nextPopular == null)
{
if (mostPopular.name != item.name && item.count > 0)
{
nextPopular = item;
nextPopularLabel.setText(NEXT_POPULAR + " " + item.name);
}
}
else if (mostPopular.count < item.count)
{
tempItem = mostPopular;
mostPopular = item;
mostPopularLabel.setText(MOST_POPULAR + " " + item.name);
nextPopular = tempItem;
nextPopularLabel.setText(NEXT_POPULAR + " " + nextPopular.name);
}
else if (nextPopular.count < item.count)
{
nextPopular = item;
nextPopularLabel.setText(NEXT_POPULAR + " " + nextPopular.name);
}
else if (mostPopular.count == 0)
{
}
}
不过,我在逻辑上一头雾水,因为有很多可能的场景可以上演。
最终结果应该是:
- 在任何给定时刻,购物车中数量最多的两个商品都应该是最受欢迎的。
- 如果第二受欢迎的最终数量更多,则这两个项目应交换最受欢迎和次受欢迎的位置。
- 随着商品从购物车中移除,受欢迎程度也应该更新。
最后,如果因为购物车更新而只有一件受欢迎的商品,我应该反映这一点。
任何人都可以帮助我如何从逻辑上规划出可能性吗?
我目前正在上离散数学课,但我还不足以尝试在纸上解决这个问题。我不是要求为我写出代码,而只是一些关于如何通过逻辑工作的指导,而不会出现混乱的if
陈述。