比較演算や論理演算による条件式の結果により処理の流れを分岐します。
if文の書式は次の通りです。
if (条件式){ 条件式が真のときに処理する文 } else { 条件式が偽のときに処理する文 }
条件式が偽のときに処理する文が無ければelse以降を次のように省略できます。
if (条件式){ 条件式が真のときに処理する文 }
分岐した後に実行される文は{と}で囲みますが、例外として実行する文が一つだけのときは{と}を省略できます。
if (条件式) 条件式が真のときに処理する文 else 条件式が偽のときに処理する文
例えば、例えば、「変数xの値が0以上のときのみ変数xの値を10倍し、表示する」には次の文を用います。
if(x >= 0){ x = x * 10; System.out.println(x); }
この例では条件式(x >= 0)が成立したときのみの処理を定義しています。条件式が成立しなかった場合には何も処理しないで次へ進むことになります。
この例に条件が成立しなかったときに「0以下は計算できません」という文を表示するときは次の文になります。
if(x >= 0){ x = x * 10; System.out.println(x); } else { System.out.println("0以下は計算できません"); }
条件式は計算式を含める事ができます。例えば、変数xを10で割ったときのあまりが0のときだけ何か処理をしたいときは次の表に表現します。
if(x % 2 == 0) { 成立したときの処理 }
計算式が条件の判定より先に処理されます。
二つ以上の条件式を使って処理を分岐するときの判定法に次の二通りがあります。
二つの条件式を演算子&&を使って、つなぎます。例えば、「変数xが0以上かつ10以下のとき」という条件式は次のように表現します。
if(x >= 0 && x <= 10){ 成立したときの処理 } else { 不成立時の処理 }
二つ以上の条件式を||を使ってつなぎます。例えば、「変数xが0以上か、または変数yが0以上のとき」という条件式は次のように表現します。
if(x >= 0 || y >= 0){ 成立したときの処理 } else { 不成立時の処理 }
ANDとORを同時に使うこともできます。例えば、「変数xの値が0以上、かつ10以下であるか、または変数xの値が100以上のとき」という条件式は次のように表現します。
if(x >= 0 && x <= 10 || x >= 100){ 成立したときの処理 } else { 不成立時の処理 }
AND判定はOR判定よりも優先されます。
if文の中にif文を入れて複雑な条件判断を指示することもできます。ある命令文の中に同じ命令文を入れることを入れ子といいます。
例えば、変数xが0、正の数、負の数のときで処理を分けたいときは次のように表現します。
if(x == 0){ // xが0のときの処理 } else { if (x > 0) { // xが正の数のときの処理 } else { // xが負の数のときの処理 } }
入れ子を使いすぎると条件判断・分岐が分りづらくなる欠点があります。