/** * ドメイン非依存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); 問題 | Javaドリル https://minner.asia 楽々学べるJavaの問題集 Fri, 05 Sep 2025 01:56:02 +0000 ja hourly 1 https://wordpress.org/?v=6.8.3 https://minner.asia/wp-content/uploads/2023/10/cropped-logo-32x32.png 問題 | Javaドリル https://minner.asia 32 32 102 「Map修羅道」 StepFinal 問題 https://minner.asia/archives/5006 https://minner.asia/archives/5006#respond Mon, 19 May 2025 01:47:19 +0000 http://localhost/?p=5006

「商品注文シミュレータを完成させよ」

あなたは、商品情報と注文情報をもとに、次のような処理を行う 商品注文シミュレータ を作成します。

以下の2つのMapがすでに存在しています:

  • Map<String, Integer> priceMap:商品名 → 単価(円)
  • Map<String, Integer> orderMap:商品名 → 注文数(個)

以下のデータを使って、各商品の合計金額を計算し、最終的な総売上金額を出力してください。


登録済み商品データ(priceMap)

"Apple"  → 120  
"Banana" → 80  
"Orange" → 100

注文情報(orderMap)

"Apple"  → 3  
"Banana" → 5  
"Grape"  → 2  ← この商品は登録されていない!

要件

  1. 存在しない商品(ここでは "Grape")が注文された場合は 「エラーとして表示」し、計算対象に含めないこと
  2. 正常な商品は「商品名、単価、個数、小計」を出力すること
  3. 最後に総売上金額を出力すること
  4. for文、Map、containsKey()を使用すること(Stream API は使わない)

テストコード(Main.java)

public class Main {
    public static void main(String[] args) {
        MapUtil.runOrderSimulator();
    }
}

ヒント

  • orderMap をループし、商品名で priceMap.containsKey() を確認する
  • 見つかれば「単価 × 注文数」で小計を計算
  • 見つからなければ System.out.println("エラー: ...") で表示
  • すべての小計を足し合わせて総売上を求める

→解答例

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

]]>
https://minner.asia/archives/5006/feed 0
102 「Map修羅道」 Step09 問題 https://minner.asia/archives/4996 https://minner.asia/archives/4996#respond Mon, 19 May 2025 01:30:42 +0000 http://localhost/?p=4996

「削除と更新はぜんぜん違う」

あなたは、会員番号と名前を管理する Map<Integer, String> を扱っています。
次の操作を順に行って、その都度Mapの状態を出力してください:

  1. Mapに次のデータを登録

    • 1 → “Yamada”
    • 2 → “Tanaka”
    • 3 → “Suzuki”
  2. 会員番号2を remove() で削除
  3. 会員番号3の名前を "Kato" に replace() で更新

    要件

    • Map<Integer, String> を使用すること
    • remove(key) と replace(key, value) の挙動の違いを明確にすること
    • 各ステップ後に Map の中身を出力して確認すること
    • 出力には for 文を用いて明示的に表示すること

    テストコード(Main.java)

    public class Main {
        public static void main(String[] args) {
            MapUtil.testRemoveAndReplace();
        }
    }

    ヒント

    • remove() はキーとその値のペアを削除する
    • replace() はキーの値を別の値で上書きする(キーが存在しなければ何もしない)
    • remove() は戻り値あり(削除された値)

    →解答例

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

    🎯 実習で理解を深めよう

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

    ]]>
    https://minner.asia/archives/4996/feed 0
    102 「Map修羅道」 Step08 問題 https://minner.asia/archives/4988 https://minner.asia/archives/4988#respond Mon, 19 May 2025 01:06:07 +0000 http://localhost/?p=4988

    「nullって登録していいの?」

    あなたは、会員IDと氏名を Map<Integer, String> で管理しています。
    次のデータをMapに登録し、すべてを出力してください:

    • 1001 → “Yamada”
    • null → “Tanaka”
    • 1002 → null

    その後、以下を確認してください:

    1. null をキーとして使った場合、登録・取得はできるか?
    2. null を値として使った場合、出力時にどう表示されるか?

    要件

    • HashMap を使うこと(TreeMap は null キーを許さない)
    • null キー・値の登録ができることを確認すること
    • for 文でMapを出力し、結果を明示的に観察すること

    テストコード(Main.java)

    public class Main {
        public static void main(String[] args) {
            MapUtil.testNullBehavior();
        }
    }

    ヒント

    • HashMap は null キーを1つだけ許可する
    • null 値はいくつでもOK(ただし扱いには注意)
    • 出力時に null が見えても、エラーにはならない

    →解答例

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

    ]]>
    https://minner.asia/archives/4988/feed 0
    102 「Map修羅道」 Step07 問題 https://minner.asia/archives/4980 https://minner.asia/archives/4980#respond Mon, 19 May 2025 00:55:40 +0000 http://localhost/?p=4980

    「店舗別の商品在庫を管理せよ」

    あなたは、複数の店舗における商品の在庫情報を管理しています。
    構造としては、次のように Mapの中にMap がある形です:

    • 店舗名(String) → 商品名(String) → 在庫数(Integer)

    次のデータをMapに登録し、すべての情報を出力してください:

    • “Tokyo” 店
    • “Apple” → 10
    • “Banana” → 5
    • “Osaka” 店
    • “Apple” → 7
    • “Orange” → 3

    出力形式(順不同):

    Tokyo:
    Apple → 10
    Banana → 5
    Osaka:
    Apple → 7
    Orange → 3

    要件

    • Map<String, Map<String, Integer>> を使うこと
    • データを登録する際、ネストされたMapを初期化してから使うこと
    • for 文で2重ループしてすべてのデータを出力すること

    テストコード(Main.java)

    public class Main {
        public static void main(String[] args) {
            MapUtil.printStoreInventory();
        }
    }

    ヒント

    • 最初に containsKey() で店舗(外側のMap)をチェック
    • 店舗Mapがなければ new HashMap<>() を使って初期化
    • 出力は「外側のMap → 内側のMap」の2重ループになる

    →解答例

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

    🎯 実習で理解を深めよう

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

    ]]>
    https://minner.asia/archives/4980/feed 0
    102 「Map修羅道」 Step06 問題 https://minner.asia/archives/4972 https://minner.asia/archives/4972#respond Mon, 19 May 2025 00:41:33 +0000 http://localhost/?p=4972

    「この商品ID、何て名前?」

    あなたは、商品IDと商品名の対応を Map<Integer, String> で管理しています。
    Mapに次のデータを登録し、その後、「ある商品名」がMap内に存在するかを判定し、そのIDを出力してください。

    登録データ:

    • 101 → “Apple”
    • 102 → “Banana”
    • 103 → “Orange”

    検索対象の商品名(固定):”Banana”

    出力例:

    商品名: Banana
    商品ID: 102

    要件

    • Map<Integer, String> を使用すること(キーがID)
    • 値からキーを探す処理を自力で書くこと(Mapは値からの検索に最適化されていない)
    • Mapをループ処理して値を見つけたら、対応するキーを出力すること
    • 値が見つからなかった場合は「見つかりませんでした」と表示すること

    テストコード(Main.java)

    public class Main {
        public static void main(String[] args) {
            MapUtil.findProductIdByName();
        }
    }

    ヒント

    • map.containsValue("Banana") というメソッドはあるが、値に対応するキーを取るにはループが必要
    • entrySet() で key と value を両方同時に扱える

    →解答例

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

    🎯 実習で理解を深めよう

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

    ]]>
    https://minner.asia/archives/4972/feed 0
    102 「Map修羅道」 Step05 問題 https://minner.asia/archives/4964 https://minner.asia/archives/4964#respond Mon, 19 May 2025 00:20:44 +0000 http://localhost/?p=4964 「Mapの出力順に意味はあるか?」

    あなたは、日替わり定食の注文データを Map<String, String> で記録しています。
    キーは日付(例: “2023-05-01″)、値はその日のメニューです。

    次のデータを登録し、Mapの内容を出力してください:

    • “2023-05-03” → “Curry”
    • “2023-05-01” → “Sushi”
    • “2023-05-02” → “Pasta”

    まずは HashMap を使って出力してみてください。
    その後、TreeMap を使って出力してみてください。


    要件

    • 2種類のMapを使って出力結果を比較すること(HashMapとTreeMap)
    • 両方とも for 文で中身を出力すること
    • 出力順が異なることを確認すること
    • import java.util.*; で TreeMap を利用できる

    テストコード(Main.java)

    public class Main {
        public static void main(String[] args) {
            MapUtil.compareMapOrder();
        }
    }

    ヒント

    • HashMap は登録順やキーの大小に関係なく、順序を保証しない
    • TreeMap はキーの自然順(文字列なら辞書順)で並び替えて保持する

    →解答例

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

    ]]>
    https://minner.asia/archives/4964/feed 0
    102 「Map修羅道」 Step04 問題 https://minner.asia/archives/4955 https://minner.asia/archives/4955#respond Mon, 19 May 2025 00:11:36 +0000 http://localhost/?p=4955 「出現回数をカウントせよ」

    あなたは、注文された商品の名前が並んだリストを受け取りました。
    このリストから、各商品が何回注文されたかをカウントして表示してください。

    対象のリストは以下とします:

    List<String> orders = Arrays.asList(
        "apple", "banana", "apple", "orange", "banana", "apple"
    );

    期待される出力例:

    apple → 3
    banana → 2
    orange → 1

    要件

    • Map<String, Integer> を使って、商品ごとの注文数をカウントすること
    • すでにカウントがある場合は +1、なければ初期値1をセットすること
    • for 文でループして処理すること(Stream APIは使用禁止)

    テストコード(Main.java)

    public class Main {
        public static void main(String[] args) {
            MapUtil.countOrders();
        }
    }

    ヒント

    • map.containsKey(key) でキーの存在を確認できる
    • よりスマートに書きたい場合は map.getOrDefault(key, 0) を使う

    →解答例

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

    🎯 実習で理解を深めよう

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

    ]]>
    https://minner.asia/archives/4955/feed 0
    102 「Map修羅道」 Step03 問題 https://minner.asia/archives/4947 https://minner.asia/archives/4947#respond Sun, 18 May 2025 23:53:20 +0000 http://localhost/?p=4947

    1つのキーに複数の値を格納するには?

    ある商品カテゴリと、それに属する商品名の対応を管理したい。
    次のようなカテゴリと商品をMapに登録し、出力してください:

    • “Food” → “Apple”, “Banana”
    • “Clothing” → “T-shirt”, “Jeans”
    • “Food” → “Orange”

    ただし、Mapの値として List<String> を使用し、カテゴリごとに複数の商品を登録できるようにしてください。


    要件

    • Map<String, List<String>> を使用すること
    • 同じキーに複数回商品を追加できるようにすること
    • for 文を使ってすべてのカテゴリと商品を出力すること

    出力例(順不同):

    Food:
    
    Apple
    
    Banana
    
    Orange
    Clothing:
    
    T-shirt
    
    Jeans

    テストコード(Main.java)

    public class Main {
        public static void main(String[] args) {
            MapUtil.printCategoryMap();
        }
    }

    ヒント

    • 値が List のとき、要素追加は map.get(key).add(...) で行う
    • ただし、put() 前にそのキーの存在を確認し、new ArrayList<>() を用意する必要がある

    →解答例

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

    🎯 実習で理解を深めよう

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

    ]]>
    https://minner.asia/archives/4947/feed 0
    102 「Map修羅道」 Step02 問題 https://minner.asia/archives/4937 https://minner.asia/archives/4937#respond Sun, 18 May 2025 23:34:41 +0000 http://localhost/?p=4937

    Mapをループで出力するには?

    あなたは、社員番号と部署名の対応を管理するMapを持っています。
    以下のデータをMapに登録し、内容を出力してください:

    • 2001 → “Sales”
    • 2002 → “HR”
    • 2003 → “Engineering”

    Mapを出力する際に、2通りの方法で実装してください:

    1. keySet() を使って出力
    2. entrySet() を使って出力

    要件

    • Map<Integer, String> を使用すること
    • for ループを使って、2通りの出力方法を試すこと
    • 両方の方法で同じ内容が出力されることを確認すること

    テストコード(Main.java)

    public class Main {
        public static void main(String[] args) {
            MapUtil.printDepartments();
        }
    }

    ヒント

    • keySet() はキーの集合を返す(値を出すには map.get(key) が必要)
    • entrySet() はキーと値のペア(Entry)を直接扱える

    →解答例

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

    ]]>
    https://minner.asia/archives/4937/feed 0
    102 「Map修羅道」 Step01 問題 https://minner.asia/archives/4925 https://minner.asia/archives/4925#respond Sun, 18 May 2025 23:20:27 +0000 http://localhost/?p=4925

    問題

    あなたは、あるイベントの参加者名簿を管理しています。
    名簿は「会員番号(int)」をキーとして、「名前(String)」を値とする Map で記録されます。

    以下の情報をMapに登録してください:

    • 101 → “Yamada”
    • 102 → “Tanaka”
    • 101 → “Suzuki”

    そのうえで、Mapの内容を出力してください。


    要件

    • Map<Integer, String> を使うこと
    • 同じキー(101)に複数回 put したときの動作を確認すること
    • System.out.println(map) を使わず、for 文で中身を明示的に出力すること

    テストコード(Main.java)

    public class Main {
      public static void main(String[] args) {
        MapUtil.printMemberMap();
      }
    }

    ヒント

    • Map.put(key, value) を同じキーで複数回使うとどうなる?
    • Map.entrySet() でループさせれば、キーと値を同時に取り出せる

    →解答例

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

    ]]>
    https://minner.asia/archives/4925/feed 0