Map修羅道:StepFinal

0003_Map修羅道-stepFinal learn

📌 まずは問題を見ろ

→ javadrill.tech で出題された問題を見る(StepFinal)


問題のポイント

  • 2つのMapを組み合わせて処理を行う実践形式
  • containsKey() を使って、存在チェックと例外処理
  • 「合計金額の算出」+「エラー処理」+「総売上表示」まで一連の流れ

まず、日本語で考えろ

  • 商品の単価一覧(priceMap)と、注文数(orderMap)がある。
  • 商品ごとに「単価 × 注文数」で小計を出して、最後に総売上を出したい。
  • でも、中には未登録の商品(Grape)も混じってる。これは除外。

コメントを書け

// priceMapとorderMapを用意する
// orderMapをループして、priceMapに商品が存在するか確認
// 存在すれば、単価×注文数の小計を計算して出力し、総売上に加算
// 存在しなければ、エラーとして出力する
// 最後に総売上金額を出力する

コメントに従ってコードを書け

import java.util.*;

public class MapUtil {
    public static void runOrderSimulator() {
        // 商品の単価データ
        Map<String, Integer> priceMap = new HashMap<>();
        priceMap.put("Apple", 120);
        priceMap.put("Banana", 80);
        priceMap.put("Orange", 100);

        // 注文データ
        Map<String, Integer> orderMap = new HashMap<>();
        orderMap.put("Apple", 3);
        orderMap.put("Banana", 5);
        orderMap.put("Grape", 2); // 未登録の商品

        int total = 0;

        // 注文処理ループ
        for (String item : orderMap.keySet()) {
            if (priceMap.containsKey(item)) {
                int price = priceMap.get(item);
                int count = orderMap.get(item);
                int subtotal = price * count;
                System.out.println(item + ": 単価 " + price + "円 × " + count + "個 = " + subtotal + "円");
                total += subtotal;
            } else {
                System.out.println("エラー: 登録されていない商品です → " + item);
            }
        }

        System.out.println("総売上: " + total + "円");
    }
}

実行結果の例(順不同)

Apple: 単価 120円 × 3個 = 360円  
Banana: 単価 80円 × 5個 = 400円  
エラー: 登録されていない商品です → Grape  
総売上: 760円

コードの解説

  • priceMap に商品と単価を、orderMap に商品と注文数を登録。
  • orderMap をループし、priceMap.containsKey() で存在チェック。
  • 登録済み商品なら単価×注文数の小計を計算して出力し、total に加算。
  • 未登録の商品はエラーとして表示し、集計対象から除外。
  • 最後に total を出力して、総売上を表示。

つまづきやすいポイント

  • get() の前に containsKey() を忘れると、未登録商品の処理で null を掛け算してバグる
  • 2つのMapをまたぐ処理では、「どっちを主軸にループするか」が重要。今回は orderMap が主軸。
  • 出力処理も含めて「流れを読む」練習になる。どこで何をしてるか説明できるようにしておけ。

teshのひとこと

このStepは、おまえが「Mapを使えるようになったか」を問うてくる。
複数のMapをつないで、条件分岐して、計算して、出力する。これ全部、現場で“よくある”。

写経じゃ到達できへん領域に、ようやく来たな。


Just keep typing, baby.
データを読み、意味をつなげ。おまえのMapに、世界を映せ。


👉 Map修羅道:全体のステップ構成はこちら