配列修羅道:Step08

配列修羅道:Step08 learn

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

問題を見る(javadrillへ)


問題のポイント

条件で絞り込む処理=フィルタリング。
商品リストの中から、「在庫数が threshold(しきい値)未満」のものだけを出力する。

これは、「データの中から条件に合うものを選ぶ」っていう、実務で超よく出るパターン。

フィルタ処理の基本は:
1. 条件を書く → 2. 条件に合ったものだけ出力


まず、日本語で考えろ

  • 商品リストがある(Productのリスト)
  • 各商品の在庫数を確認する
  • threshold(しきい値)未満だったら表示
  • それ以外は無視して何も出さない

コメントを書け

// 商品リストをループで回す
// 各商品の在庫数が threshold 未満かチェックする
// 条件を満たすものだけ出力する

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

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);

            if (p.getStock() < threshold) {
                System.out.println(p.getName() + " (在庫: " + p.getStock() + ")");
            }
        }
    }
}

コードの解説

p.getStock() < threshold
商品の在庫数がしきい値より少ないかを判定。
「未満」なのか「以下」なのか──条件式の意味を正確に読むこと

if (...) { System.out.println(...) }
条件に一致したときだけ出力する、いわゆるフィルタ処理の基本形。
ループの中に条件、その中に処理という構造に慣れよう。

System.out.println(p.getName() + " (在庫: " + p.getStock() + ")");
ここでは表示形式にも注意。“(在庫: 数量)”のフォーマットが崩れていないか?


つまづきやすいポイント

条件式の向き、合ってるか?

p.getStock() > threshold と逆向きに書くと、「在庫が多い商品」が出てしまう。
特に「未満」「以下」「以上」「超える」などの言葉は混乱しやすい。

出力が0件でもバグじゃない。

該当商品がなければ、何も出力されないのが正解。
「結果がない」こと自体が“正しい結果”の場合もあるという感覚を身につけろ。


teshのひとこと

全部出力するのはただの繰り返しだ。
でも「条件をつけて、合ったやつだけ出す」──
それはもう意思のある処理になる。

フィルタは、ループに“判断”を持たせるんだよ。
おまえのコードがただの動作じゃなくて、“選別”になる。

Just keep typing, baby.
ループに判断を与えろ。それが設計ってもんだ。


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

他のステップや学習順序を確認したい場合は、
[配列修羅道:全体のステップ構成] をチェックしてくれ。