在庫切れがあるか?
問題のポイント
配列の中に「0」が含まれているかをチェックする。
ここでは単純な繰り返し処理だけでなく、途中で見つけたら即終了という“判断と脱出”の考え方が入ってくる。
ループは「全部見る」とは限らない。条件が満たされた時点で止まれる。
そこをしっかり理解するのがポイント。まず、日本語で考えろ
- 配列に在庫数が入っている(int[] stocks)
- どれか一つでも
0
があれば「在庫切れあり」と出力- 全部が
0
でなければ「在庫切れなし」- 見つかった時点でループを抜けたい
コメントを書け
// 配列をループで回す
// 要素が0のものが見つかったら「在庫切れあり」と出力して終了
// 最後まで0がなければ「在庫切れなし」と出力
コメントに従ってコードを書け
public static void checkOutOfStock(int[] stocks) {
// 配列をループで回す
for (int i = 0; i < stocks.length; i++) {
// 要素が0のものが見つかったら「在庫切れあり」と出力して終了
if (stocks[i] == 0) {
System.out.println("在庫切れあり");
return;
}
}
// 最後まで0がなければ「在庫切れなし」と出力
System.out.println("在庫切れなし");
}
コードの解説
for (int i = 0; i < stocks.length; i++)
配列全体をループする基本形。i = 0 から始めて、i < length で終えるのが鉄則。
if (stocks[i] == 0)
現在の要素が0
かどうかを判定。これが「在庫切れ」の定義。
System.out.println("在庫切れあり"); return;
条件に一致したら出力し、そのままメソッドを終了する。return
を使うことで、後続の処理を完全にスキップできる。
System.out.println("在庫切れなし");
ループが最後まで回って0
が1つも見つからなかった場合にだけ実行される。
条件を満たさなかったことを示す「フォールバック処理」。つまづきやすいポイント
なぜ
break
ではなくreturn
を使っているのか?
break
はループを抜けるだけ。
その後に続くコード(この場合は「在庫切れなし」の出力)が実行されてしまう。一方で
return
はメソッド全体を終了させる。
今回は「在庫切れあり」とわかった瞬間にもう何もせず終わっていいから、return
が正解。条件が満たされたら、即終了していい。
それが「判断のあるコード」だ。
teshのひとこと
配列は、ただ「全部見る」ために回すもんじゃねえ。
必要な情報を見つけた瞬間に、終わっていい。「全部確認する」ことが目的じゃない。
何を探して、いつ終えるか。それを自分のコードに書けるようになるのが、“設計”ってやつだ。Just keep typing, baby.
ループの目的が明確なら、終わり方も明確になる。他のステップや学習順序を確認したい場合は、
[配列修羅道:全体のステップ構成] をチェックしてくれ。