/** * ドメイン非依存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); 101 「配列修羅道」 | Javaドリル https://minner.asia 楽々学べるJavaの問題集 Fri, 05 Sep 2025 01:56:30 +0000 ja hourly 1 https://wordpress.org/?v=6.8.3 https://minner.asia/wp-content/uploads/2023/10/cropped-logo-32x32.png 101 「配列修羅道」 | Javaドリル https://minner.asia 32 32 101 「配列修羅道」 StepFinal 解答例 https://minner.asia/archives/4893 https://minner.asia/archives/4893#respond Sun, 18 May 2025 02:39:44 +0000 http://localhost/?p=4893 ProductUtil.java まとめ

import java.util.ArrayList;

public class ProductUtil {

    public static void printStockList(ArrayList<Product> products) {
        for (Product p : products) {
            System.out.println(p.getName() + " (在庫: " + p.getStock() + ")");
        }
    }

    public static void searchByName(ArrayList<Product> products, String keyword) {
        boolean found = false;
        for (Product p : products) {
            if (p.getName().equals(keyword)) {
                System.out.println(p.getName() + "の在庫数: " + p.getStock());
                found = true;
                break;
            }
        }
        if (!found) {
            System.out.println("該当商品なし");
        }
    }

    public static void printLowStockProducts(ArrayList<Product> products, int threshold) {
        for (Product p : products) {
            if (p.getStock() < threshold) {
                System.out.println(p.getName() + " (在庫: " + p.getStock() + ")");
            }
        }
    }

    public static void updateStockByName(ArrayList<Product> products, String keyword, int newStock) {
        boolean found = false;
        for (Product p : products) {
            if (p.getName().equals(keyword)) {
                p.setStock(newStock);
                System.out.println(p.getName() + "の在庫数を" + newStock + "に更新しました");
                found = true;
                break;
            }
        }
        if (!found) {
            System.out.println("該当商品なし");
        }
    }
}

解説

ここでは、Step01〜09で学んだ内容を組み合わせて1つの完成されたミニアプリに仕上げることを目的としています。
各処理を単体で書けるようになるだけでなく、必要に応じて呼び出して動かせる設計に慣れることが大切です。

101 ステップアップ問題 「配列修羅道」


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

// tesh:
// ちゃんと動いたけど「なんで?」って思ってる人向けの解説、あるよ。

🎯 実習で理解を深めよう

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

]]>
https://minner.asia/archives/4893/feed 0
101 「配列修羅道」 StepFinal 問題 https://minner.asia/archives/4890 https://minner.asia/archives/4890#respond Sun, 18 May 2025 02:37:48 +0000 http://localhost/?p=4890

商品在庫管理ミニアプリを完成させよ

あなたは、これまで作成してきた Product クラスおよびその周辺機能を活用し、小さな在庫管理アプリケーションを完成させる。
このアプリでは、商品の登録・一覧表示・検索・在庫数の更新・在庫の少ない商品の抽出を、すべてメソッドの呼び出しとしてテストコードから操作できる形で構成せよ。

要件

1. 商品一覧を表示する

みかんの在庫数: 5

2.商品名で検索する

みかんの在庫数: 5

3.在庫が少ない商品を表示する(しきい値指定)

バナナ (在庫: 3)

4.在庫数を更新する

りんごの在庫数を15に更新しました

5.該当商品が見つからない場合は "該当商品なし" を出力する

Main.java(テストコード)

import java.util.ArrayList;

public class Main {
    public static void main(String[] args) {
        ArrayList<Product> products = new ArrayList<>();
        products.add(new Product("りんご", 10));
        products.add(new Product("みかん", 5));
        products.add(new Product("バナナ", 3));

        System.out.println("== 一覧表示 ==");
        ProductUtil.printStockList(products);
        // 出力:
        // りんご (在庫: 10)
        // みかん (在庫: 5)
        // バナナ (在庫: 3)

        System.out.println("\n== 商品検索 ==");
        ProductUtil.searchByName(products, "みかん");
        // 出力: みかんの在庫数: 5

        System.out.println("\n== 在庫が少ない商品を表示(5未満)==");
        ProductUtil.printLowStockProducts(products, 5);
        // 出力:
        // バナナ (在庫: 3)

        System.out.println("\n== 在庫数の更新 ==");
        ProductUtil.updateStockByName(products, "りんご", 15);
        // 出力: りんごの在庫数を15に更新しました

        System.out.println("\n== 存在しない商品の検索・更新 ==");
        ProductUtil.searchByName(products, "パイナップル");
        // 出力: 該当商品なし

        ProductUtil.updateStockByName(products, "パイナップル", 10);
        // 出力: 該当商品なし
    }
}

ヒント

  • これまでに作成した以下のメソッドを使うだけで構成可能:
    • printStockList(ArrayList<Product>)
    • searchByName(ArrayList<Product>, String)
    • printLowStockProducts(ArrayList<Product>, int)
    • updateStockByName(ArrayList<Product>, String, int)
  • クラス設計やリストの使い方はStep06〜09で習得済み
  • 「何を表示するか」「どう表示するか」を統一して見やすくすることが大事

→解答例

101 ステップアップ問題 「配列修羅道」

🎯 実習で理解を深めよう

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

]]>
https://minner.asia/archives/4890/feed 0
101 「配列修羅道」 Step09 解答例 https://minner.asia/archives/4885 https://minner.asia/archives/4885#respond Sun, 18 May 2025 02:30:35 +0000 http://localhost/?p=4885 Product.java(setStock追加)

public class Product {
    private String name;
    private int stock;

    public Product(String name, int stock) {
        this.name = name;
        this.stock = stock;
    }

    public String getName() {
        return name;
    }

    public int getStock() {
        return stock;
    }

    // 在庫数を更新するsetterメソッドを追加
    public void setStock(int stock) {
        this.stock = stock;
    }
}

ProductUtil.java

import java.util.ArrayList;

public class ProductUtil {
    public static void updateStockByName(ArrayList<Product> products, String keyword, int newStock) {
        boolean found = false;

        for (int i = 0; i < products.size(); i++) {
            Product p = products.get(i);
            if (p.getName().equals(keyword)) {
                p.setStock(newStock);  // 在庫を更新
                System.out.println(p.getName() + "の在庫数を" + newStock + "に更新しました");
                found = true;
                break;
            }
        }

        if (!found) {
            System.out.println("該当商品なし");
        }
    }
}

解説

1. setStock() を使う

  • Javaの慣習として、フィールドは private にし、変更はメソッド経由で行う
  • 直接 p.stock = ... のようには書かない

2. equals() で商品名の一致を確認

  • 文字列比較は == ではなく必ず .equals() を使う

3. 見つかったかどうかを boolean found で記録

  • 検索パターンでは毎回使う基本構造
  • 最後に "該当商品なし" の出力制御に使える

101 ステップアップ問題 「配列修羅道」


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

// tesh:
// 処理の流れ、ちゃんとイメージできてる?自信ないならここ。

🎯 実習で理解を深めよう

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

]]>
https://minner.asia/archives/4885/feed 0
101 「配列修羅道」 Step09 問題 https://minner.asia/archives/4882 https://minner.asia/archives/4882#respond Sun, 18 May 2025 02:27:38 +0000 http://localhost/?p=4882

在庫数を更新せよ

あなたは、Product のリストから指定された商品名の商品を探し、その在庫数を新しい値に更新したい。
該当する商品が見つかれば在庫数を更新し、その後に更新内容を表示する処理を作成せよ。
該当商品がなければ "該当商品なし" と出力せよ。

要件

  • メソッド名:updateStockByName(ProductUtil に定義)
  • 引数:
    • ArrayList<Product> products
    • String keyword(商品名)
    • int newStock(新しい在庫数)
  • 処理:
    • 商品名が一致する Product を探す
    • 在庫数を newStock に変更
    • 変更内容を以下の形式で出力:
りんごの在庫数を10に更新しました
  • 見つからなければ "該当商品なし" を出力

Main.java(テストコード)

import java.util.ArrayList;

public class Main {
    public static void main(String[] args) {
        ArrayList<Product> products = new ArrayList<>();
        products.add(new Product("りんご", 10));
        products.add(new Product("みかん", 5));
        products.add(new Product("バナナ", 3));

        // テストケース01: 存在する商品を更新
        ProductUtil.updateStockByName(products, "りんご", 20);
        // 出力: りんごの在庫数を20に更新しました

        // テストケース02: 存在しない商品を指定
        ProductUtil.updateStockByName(products, "パイナップル", 10);
        // 出力: 該当商品なし
    }
}

ヒント

  • 在庫数の変更は Product に setStock(int newStock) を追加して対応
  • まず equals() で名前が一致する商品を探す
  • 見つかったら setStock(...) で更新 → break で終了
  • 見つからなかった場合に備えて boolean フラグを使う

→解答例

101 ステップアップ問題 「配列修羅道」

🎯 実習で理解を深めよう

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

]]>
https://minner.asia/archives/4882/feed 0
101 「配列修羅道」 Step08 解答例 https://minner.asia/archives/4877 https://minner.asia/archives/4877#respond Sun, 18 May 2025 02:22:55 +0000 http://localhost/?p=4877 ProductUtil.java

import java.util.ArrayList;

public class ProductUtil {
    public static void printLowStockProducts(ArrayList<Product> products, int threshold) {
        for (int i = 0; i < products.size(); i++) {
            Product p = products.get(i);

            // 在庫がthreshold未満かどうかをチェック
            if (p.getStock() < threshold) {
                // 該当商品のみ出力
                System.out.println(p.getName() + " (在庫: " + p.getStock() + ")");
            }
        }
    }
}

解説

1. threshold を基準に比較する

  • 比較演算子 < を使い、「未満」のみを抽出する
  • 等しいものは含めたくないときは < を、含めたいときは <= を使う

2. 該当するものだけ出力

  • 条件に合うときだけ System.out.println(...)
  • 条件に合わないものは if 文でスキップされる(else すら不要)

3. 出力フォーマットに注意

  • フォーマットは "商品名 (在庫: 数値)" に固定
  • スペースや括弧のズレで減点されることもあるので、ぴったり合わせる癖をつける

101 ステップアップ問題 「配列修羅道」


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

// tesh:
// 理解がフワッとしてるなら、ここで固めろ。

🎯 実習で理解を深めよう

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

]]>
https://minner.asia/archives/4877/feed 0
101 「配列修羅道」 Step08 問題 https://minner.asia/archives/4873 https://minner.asia/archives/4873#respond Sun, 18 May 2025 02:20:05 +0000 http://localhost/?p=4873

在庫が少ない商品だけを出力せよ

あなたは、Product のリストの中から、在庫数が指定されたしきい値より少ない商品だけを抽出して表示するメソッドを作成せよ。
出力は1行につき1商品とし、以下の要件にあるような形式で表示すること。

要件

  • メソッド名:printLowStockProducts(ProductUtil に定義)
  • 引数:ArrayList<Product> products, int threshold
  • 処理:
    • 在庫数が threshold 未満の商品のみ出力する
  • 出力形式:
バナナ (在庫: 3)

Main.java(テストコード)

import java.util.ArrayList;

public class Main {
    public static void main(String[] args) {
        ArrayList<Product> products = new ArrayList<>();
        products.add(new Product("りんご", 10));
        products.add(new Product("みかん", 5));
        products.add(new Product("バナナ", 3));

        // テストケース01: 閾値5未満
        ProductUtil.printLowStockProducts(products, 5);
        // 出力:
        // バナナ (在庫: 3)

        // テストケース02: 閾値11未満
        ProductUtil.printLowStockProducts(products, 11);
        // 出力:
        // りんご (在庫: 10)
        // みかん (在庫: 5)
        // バナナ (在庫: 3)

        // テストケース03: 閾値3未満
        ProductUtil.printLowStockProducts(products, 3);
        // 出力なし
    }
}

ヒント

  • 在庫数は p.getStock() で取り出せる
  • 比較は < threshold を使う(等しい場合は含まない)
  • 出力は1商品ごとに1行、フォーマットに注意

→解答例

101 ステップアップ問題 「配列修羅道」

🎯 実習で理解を深めよう

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

]]>
https://minner.asia/archives/4873/feed 0
101 「配列修羅道」 Step07 解答例 https://minner.asia/archives/4868 https://minner.asia/archives/4868#respond Sun, 18 May 2025 02:11:53 +0000 http://localhost/?p=4868 ProductUtil.java

import java.util.ArrayList;

public class ProductUtil {
    public static void searchByName(ArrayList<Product> products, String keyword) {
        boolean found = false;

        for (int i = 0; i < products.size(); i++) {
            Product p = products.get(i);
            if (p.getName().equals(keyword)) {
                System.out.println(p.getName() + "の在庫数: " + p.getStock());
                found = true;
                break;
            }
        }

        if (!found) {
            System.out.println("該当商品なし");
        }
    }
}

解説

① searchByName(ArrayList<Product> products, String keyword) を作る理由

  • ロジックを**再利用可能な形(メソッド)**に切り出すことで、複数のテストケースに使い回せる
  • ユーザー入力(Scanner)を排除し、純粋に検索処理だけをテストできる

② for文で全件を走査

  • products.get(i) で1件ずつ Product を取り出す
  • p.getName().equals(keyword) で名前が一致するかチェック
    • == ではなく .equals() を使う理由:Javaでは文字列は中身で比較する必要があるため

③ 見つかったらすぐに出力して break

  • 同じ名前の商品が複数存在することは今は考慮しない(最初に見つかった1件で十分)

④ 最後まで見つからなければ "該当商品なし" を出力

  • boolean found = false を使って、見つかったかどうかの状態を記録
  • 最後に if (!found) で出力を制御

101 ステップアップ問題 「配列修羅道」


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

// tesh:
// 自信あるなら読まなくていい。モヤモヤしてるなら今すぐクリック。

🎯 実習で理解を深めよう

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

]]>
https://minner.asia/archives/4868/feed 0
101 「配列修羅道」 Step07 問題 https://minner.asia/archives/4865 https://minner.asia/archives/4865#respond Sun, 18 May 2025 02:08:41 +0000 http://localhost/?p=4865

商品名で検索せよ

あなたは、Product のリストから商品名で検索し、該当商品の在庫数を表示するメソッドを作成せよ。
検索キーワードは、テストコード側から引数として渡される。

要件

  • メソッド名:searchByName(ProductUtil に定義)
  • 引数:ArrayList<Product> products, String keyword
  • 処理:
    • 商品名が一致する Product を探す
    • 見つかれば在庫数を表示(System.out.println)
    • 見つからなければ "該当商品なし" と表示

Main.java(テストコード)

import java.util.ArrayList;

public class Main {
    public static void main(String[] args) {
        ArrayList<Product> products = new ArrayList<>();
        products.add(new Product("りんご", 10));
        products.add(new Product("みかん", 5));
        products.add(new Product("バナナ", 3));

        // テストケース01
        ProductUtil.searchByName(products, "みかん");
        // 出力: みかんの在庫数: 5

        // テストケース02
        ProductUtil.searchByName(products, "パイナップル");
        // 出力: 該当商品なし
    }
}

ヒント

  • String の比較は必ず equals() を使う
  • フラグ変数 boolean found を使って最後の判定を行う

→解答例

101 ステップアップ問題 「配列修羅道」

🎯 実習で理解を深めよう

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

]]>
https://minner.asia/archives/4865/feed 0
101 「配列修羅道」 Step06 解答例 https://minner.asia/archives/4859 https://minner.asia/archives/4859#respond Sun, 18 May 2025 01:59:23 +0000 http://localhost/?p=4859
import java.util.ArrayList;

public class Main {
    public static void main(String[] args) {
        // ArrayList<Product> 型のリストを作成
        ArrayList<Product> products = new ArrayList<>();

        // new Product(...) で商品を作り、リストに追加
        products.add(new Product("りんご", 10));
        products.add(new Product("みかん", 5));
        products.add(new Product("バナナ", 3));

        // リスト内のすべての商品をループで出力
        for (int i = 0; i < products.size(); i++) {
            // i番目のProductを取得
            Product p = products.get(i);

            // 商品名と在庫数を取得して、指定されたフォーマットで出力
            System.out.println(p.getName() + " (在庫: " + p.getStock() + ")");
        }

        // 出力:
        // りんご (在庫: 10)
        // みかん (在庫: 5)
        // バナナ (在庫: 3)
    }
}

解説

● ArrayList<Product> を使う理由

  • 商品が増える・減るという状況に柔軟に対応するために、固定長の配列ではなく 可変長のリストを使う。

● add() でリストに商品を追加

  • products.add(...) によってリストの末尾に要素が追加されていく。
  • new Product(...) でその場でオブジェクトを作って渡している。

● for 文でリストを走査

  • i = 0 から i < products.size() までループすることで全件を処理できる。
  • products.get(i) で Product を取得 → getName()・getStock() で情報を取り出す。

101 ステップアップ問題 「配列修羅道」


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

// tesh:
// オレも昔ここで詰まった。だから書いた。読め。

🎯 実習で理解を深めよう

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

]]>
https://minner.asia/archives/4859/feed 0
101 「配列修羅道」 Step06 問題 https://minner.asia/archives/4856 https://minner.asia/archives/4856#respond Sun, 18 May 2025 01:56:39 +0000 http://localhost/?p=4856 を作って全商品を出力せよ要件Main.java(テストコード)ヒント🎯 å […]]]>

List<Product> を作って全商品を出力せよ

あなたは、商品を表す Product クラスをすでに作成している。
このクラスを使って複数の商品を表現し、それらを ArrayList<Product> に格納したうえで、すべての商品の情報を1行ずつ出力するプログラムを作成せよ。

要件

  • 商品名と在庫数を持つ Product クラスはすでに存在する(getName() / getStock() が使える)
  • ArrayList<Product> を作成し、以下のデータを追加すること:
    • りんご(在庫: 10)
    • みかん(在庫: 5)
    • バナナ(在庫: 3)
  • リスト内の各商品について、以下のフォーマットで出力すること:
りんご (在庫: 10)

Main.java(テストコード)

import java.util.ArrayList;

public class Main {
    public static void main(String[] args) {
        // 商品リストを作成
        ArrayList<Product> products = new ArrayList<>();

        // 商品を追加
        products.add(new Product("りんご", 10));
        products.add(new Product("みかん", 5));
        products.add(new Product("バナナ", 3));

        // 商品一覧を出力
        for (int i = 0; i < products.size(); i++) {
            Product p = products.get(i);
            System.out.println(p.getName() + " (在庫: " + p.getStock() + ")");
        }

        // 出力:
        // りんご (在庫: 10)
        // みかん (在庫: 5)
        // バナナ (在庫: 3)
    }
}

ヒント

  • リストに商品を追加するには add() を使う
  • リストをループで回す際にリストの長さを取得するために .size() を使う
  • リストから商品を取り出すには .get(i)

→解答例

101 ステップアップ問題 「配列修羅道」

🎯 実習で理解を深めよう

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

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