ユーザーのショッピングカートで最も人気のある2つのアイテムを特定しようとしています。
ユーザーがカートにアイテムを追加またはカートからアイテムを削除するたびに、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)
{
}
}
実行できるシナリオが非常に多いため、ロジックにすべてが混乱しています。
最終結果は次のようになります。
- いつでも、ショッピングカート内の数量が最も多い2つのアイテムが最も人気があるように表示されます。
- 2番目に人気のあるアイテムの数量が多くなった場合、2つのアイテムは、最も人気のあるアイテムと次に人気のあるアイテムの位置を入れ替える必要があります。
- カートからアイテムが削除されると、人気も更新する必要があります。
最後に、カートの更新のために人気のあるアイテムが1つしかない場合は、それを反映する必要があります。
誰かが可能性を論理的に計画する方法を手伝ってくれますか?
私は現在離散数学のクラスを受講していますが、これを紙で解決するのに十分な距離ではありません。私はコードを書き出すことを求めているのではなく、非常に混乱するif
ようなステートメントの混乱なしに、ロジックをどのように処理するかについてのガイダンスにすぎません。