/** * ドメイン非依存URL出力フィルタ * javadrill.tech移行時はwp_options.home/siteurlのみ変更すればよい * * データベースには絶対URL(https://minner.asia)を保持し、 * 表示時に現在のドメイン(home_url())に動的変換する */ function javadrill_make_urls_dynamic($content) { if (empty($content)) { return $content; } // データベース内の絶対URLを現在のhome_url()に置換 $old_url = 'https://minner.asia'; $new_url = untrailingslashit(home_url()); // http版も対応(念のため) $content = str_replace($old_url, $new_url, $content); $content = str_replace('http://minner.asia', $new_url, $content); return $content; } // 投稿本文、ウィジェット、タームの説明、抜粋に適用 add_filter('the_content', 'javadrill_make_urls_dynamic', 20); add_filter('widget_text', 'javadrill_make_urls_dynamic', 20); add_filter('term_description', 'javadrill_make_urls_dynamic', 20); add_filter('get_the_excerpt', 'javadrill_make_urls_dynamic', 20); 102 「Map修羅道」 StepFinal 解答例 | Javaドリル

102 「Map修羅道」 StepFinal 解答例

102-stepFinal 102「Map修羅道」

MapUtil.java

import java.util.*;

public class MapUtil {
    public static void runOrderSimulator() {
        // 商品ごとの単価を保持するMap
        Map<String, Integer> priceMap = new HashMap<>();
        priceMap.put("Apple", 120);
        priceMap.put("Banana", 80);
        priceMap.put("Orange", 100);

        // 注文数を保持するMap
        Map<String, Integer> orderMap = new HashMap<>();
        orderMap.put("Apple", 3);
        orderMap.put("Banana", 5);
        orderMap.put("Grape", 2); // 登録されていない商品

        int total = 0; // 総売上金額

        // 注文Mapをループ
        for (String product : orderMap.keySet()) {
            int quantity = orderMap.get(product);

            // 商品が登録されているかチェック
            if (priceMap.containsKey(product)) {
                int price = priceMap.get(product);
                int subtotal = price * quantity;

                // 明細を出力
                System.out.println(product + " → 単価: " + price + "円, 個数: " + quantity + ", 小計: " + subtotal + "円");

                // 総計に加算
                total += subtotal;
            } else {
                // 商品が見つからない場合はエラー表示
                System.out.println("エラー: 商品 '" + product + "' は未登録です。");
            }
        }

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

解説:Mapを使って注文処理を実装する

このステップでは、これまで学んだMap操作を総動員して、実践的な処理を構築します。

ポイントとなる処理

  1. 価格と注文数という「別のMap」を対応させる
    orderMap をループして、各商品名に対して priceMap で単価を参照します。
  2. containsKey() を使って、存在しない商品をチェック
    未登録商品(例:”Grape”)は、エラーとして出力し、集計対象に含めません。
  3. 各商品の小計(単価 × 数量)を計算し、逐次表示
    最後に総売上を合計・出力します。

実行結果の例

Apple → 単価: 120円, 個数: 3, 小計: 360円
Banana → 単価: 80円, 個数: 5, 小計: 400円
エラー: 商品 'Grape' は未登録です。
総売上: 760円

まとめ

  • Mapの組み合わせ(priceMap × orderMap)を自在に使えること
  • containsKey() による存在チェックの重要性
  • 条件分岐とループ処理の組み合わせが自然に書けるか

このFinalステップを自力で書き切れたなら、Mapの基本操作は一通りマスターしたと言って良い。
これでMapにビビることは、もうない。。

102 ステップアップ問題 「Map修羅道」


Just Keep Typing, Baby!では、この「Map修羅道」でつまづいた人向けの解説をしています。こちらもぜひ!

// tesh:
// 腑に落ちるまでが勉強。落としていけ、ここで。

🎯 実習で理解を深めよう

この内容についてJavaDrillで実際に手を動かして学習できます

コメント

タイトルとURLをコピーしました