if 文の基本
誰に対しても、同じ文しか出せない
ここまでのプログラムは、書いた行が上から下へ必ず全部実行されていました。これだと在庫が 100 個でも 3 個でも同じ文が出てしまい、「残りわずかです」のような、ある条件のときだけ出したい一文が書けません。
そこで使うのが if 文です。丸括弧の中に条件を、中括弧の中に「その条件が成り立ったときだけ動かしたい処理」を書きます。
Java
int stock = 3;
if (stock < 5) {
System.out.println("残りわずかです");
}
System.out.println("ご注文ありがとうございます");stock が 3 のときは 3 < 5 が true になるので、2 つの文が両方出ます。stock が 20 なら条件は false になり、中括弧の中だけが飛ばされます。if の外にある最後の行は、条件に関係なく必ず実行されます。
中括弧をどこまで囲むかで、動く行が変わる
条件が成り立ったときに動かしたい文が複数あるなら、その全部を中括弧の中に入れます。
Java
if (stock == 0) {
System.out.println("売り切れです");
System.out.println("再入荷をお待ちください");
}処理が 1 行だけなら中括弧を省略して書けますが、省略はおすすめしません。あとから 2 行目を足したとき、見た目のインデントは揃っているのに、その行だけ if の外側として扱われます。エラーにならず動いてしまうぶん、原因にたどり着くまで時間を取られます。
丸括弧の直後にセミコロンを置いてしまう if (stock == 0); も同じ性質の事故です。「条件が成り立ったら何もしない」という意味になり、後ろの中括弧は if と無関係にいつも実行されます。
丸括弧に入れられるのは boolean だけ
if の丸括弧に書けるのは、評価すると true か false になる式だけです。前の章で作った stock < 5 のような比較式や、もともと boolean の変数がそのまま入ります。
Java
boolean isSoldOut = stock == 0;
if (isSoldOut) {
System.out.println("売り切れです");
}数値をそのまま入れることはできません。if (stock) と書くとコンパイルエラーになります。C 言語には「0 なら false、それ以外は true」という決まりがありますが、Java にその近道はなく、必ず boolean を要求します。書き間違いが実行前に見つかるので、慣れると助かる仕様です。
要件
- クラス名は
Solution、メソッド名はisPositive、引数はint n1 つにすること nが0より大きいときだけ"positive"を返し、それ以外は"not positive"を返すこと0は正の数に含めない (isPositive(0)は"not positive"を返す)
入出力例
isPositive(5) → "positive"
isPositive(0) → "not positive"
isPositive(-3) → "not positive"
isPositive(100) → "positive"