在庫が少ない商品だけを出力せよ
問題のポイント
条件で絞り込む処理=フィルタリング。
商品リストの中から、「在庫数が 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.
ループに判断を与えろ。それが設計ってもんだ。
他のステップや学習順序を確認したい場合は、
[配列修羅道:全体のステップ構成] をチェックしてくれ。