合計金額の計算
CoddyのDartジャーニー「論理とフロー」セクションの一部 — レッスン 35/65。
チャレンジ
簡単ショッピングカート内のすべての商品の合計金額を計算する機能を実装して、ショッピングカート計算機プロジェクトを継続するプログラムを作成してください。前回のレッスンのカート管理を基に、プログラムは以下のことを行う必要があります:
- 既存の商品カタログの Map と、前回のセットアップで作成されたショッピングカートの List を使用する
- 顧客がカートに追加したい商品を表す複数の文字列入力を読み取る(入力は
"cart_done"を受け取ったときに終了する) - 各商品について、
containsKey()を使用して商品カタログに存在するかどうかを確認する - 商品が存在する場合は、
add()メソッドを使用してショッピングカートの List に追加する - カートのリストを反復処理し、商品マップで各商品の価格を検索して、合計金額を計算する
- すべての価格を合算して、最終的な合計金額を算出する
- カート計算レポートを、以下に示す正確な形式で表示する
例えば、店に "Apple" が 1.50、"Banana" が 0.80、"Orange" が 2.00、"Milk" が 3.25 という商品があり、顧客が "Apple"、"Banana"、"Apple"、"Milk" を追加したい場合、プログラムは次のように出力する必要があります:
Shopping Cart Operations:
Adding 'Apple': Item added to cart successfully
Adding 'Banana': Item added to cart successfully
Adding 'Apple': Item added to cart successfully
Adding 'Milk': Item added to cart successfully
Cart Contents: [Apple, Banana, Apple, Milk]
Cost Calculation:
Apple: $1.50
Banana: $0.80
Apple: $1.50
Milk: $3.25
Total Cost: $7.05
Cart Summary:
Total items in cart: 4
Unique products in cart: 3
Items successfully added: 4
Items not found: 0
Cart Status: Ready for checkout店に "Laptop" が 999.99、"Mouse" が 25.50、"Keyboard" が 75.00 という商品があり、顧客が "Mouse"、"Keyboard"、"Mouse"、"Monitor" を追加したい場合、プログラムは次のように出力する必要があります:
Shopping Cart Operations:
Adding 'Mouse': Item added to cart successfully
Adding 'Keyboard': Item added to cart successfully
Adding 'Mouse': Item added to cart successfully
Adding 'Monitor': Item not available in store
Cart Contents: [Mouse, Keyboard, Mouse]
Cost Calculation:
Mouse: $25.50
Keyboard: $75.00
Mouse: $25.50
Total Cost: $126.00
Cart Summary:
Total items in cart: 3
Unique products in cart: 2
Items successfully added: 3
Items not found: 1
Cart Status: Ready for checkout店に "Novel" が 12.99、"Magazine" が 4.50、"Textbook" が 89.00 という商品があり、顧客が "Novel"、"Magazine"、"Novel"、"Textbook"、"Dictionary" を追加したい場合、プログラムは次のように出力する必要があります:
Shopping Cart Operations:
Adding 'Novel': Item added to cart successfully
Adding 'Magazine': Item added to cart successfully
Adding 'Novel': Item added to cart successfully
Adding 'Textbook': Item added to cart successfully
Adding 'Dictionary': Item not available in store
Cart Contents: [Novel, Magazine, Novel, Textbook]
Cost Calculation:
Novel: $12.99
Magazine: $4.50
Novel: $12.99
Textbook: $89.00
Total Cost: $119.48
Cart Summary:
Total items in cart: 4
Unique products in cart: 3
Items successfully added: 4
Items not found: 1
Cart Status: Ready for checkoutプログラムは、ショッピングカートリストの各アイテムを反復処理し、商品カタログマップでその価格を検索し、その価格を累計に加算する必要があります。ループを使用して各カートアイテムを処理し、合計金額を蓄積してください。コスト計算フェーズでは、各アイテムの個別の価格を表示してください。すべての価格は、小数点以下ちょうど2桁を表示するようにフォーマットしてください。入力形式は、カートに追加するアイテム名で、"cart_done" で終わります。
自分で試してみよう
import 'dart:io';
void main() {
// Product catalog with items and prices
Map<String, double> productCatalog = {
'Apple': 1.50,
'Banana': 0.80,
'Orange': 2.00,
'Milk': 3.25,
'Laptop': 999.99,
'Mouse': 25.50,
'Keyboard': 75.00,
'Novel': 12.99,
'Magazine': 4.50,
'Textbook': 89.00
};
// Shopping cart to store selected items
List<String> shoppingCart = [];
// Counters for tracking operations
int successfulAdditions = 0;
int itemsNotFound = 0;
print("Shopping Cart Operations:");
// Read items until "cart_done" is received
String? item;
while ((item = stdin.readLineSync()) != "cart_done") {
if (item != null) {
if (productCatalog.containsKey(item)) {
shoppingCart.add(item);
successfulAdditions++;
print("Adding '$item': Item added to cart successfully");
} else {
itemsNotFound++;
print("Adding '$item': Item not available in store");
}
}
}
// Display cart contents
print("Cart Contents: $shoppingCart");
// Calculate unique products
Set<String> uniqueProducts = shoppingCart.toSet();
// Display cart summary
print("Cart Summary:");
print("Total items in cart: ${shoppingCart.length}");
print("Unique products in cart: ${uniqueProducts.length}");
print("Items successfully added: $successfulAdditions");
print("Items not found: $itemsNotFound");
print("Cart Status: Ready for checkout");
}論理とフローのすべてのレッスン
1リスト操作の応用
リストのプロパティ: first と lastリストの状態: isEmpty と isNotEmptyリストの反転リストへの追加: insertリストの削除: removeWhereリスト内の検索: indexOfリストのソートリストのシャッフルまとめ - リストオーガナイザー