naoppy-jyokenの日記

Javaで競プロをするぞ、NITAC情研用

Java入門8

今日の目標

条件分岐の文について学ぶ

準備

Code, Compile & Run | CodeChefにアクセスして、JAVAを選びます。

条件分岐とは

もし~だったら、...をする、そうでなければ...。というのをプログラムで表現します。

多くの言語と同じで、Javaではif文を使います。

とりあえず書いてみよう

int x = 10;//ここを色々変えてみてください
if(x > 0) {
    System.out.println("more than 0");
}
System.out.println("finish!");

これが一番単純な形のif文で、ifの後に続ける括弧の中には式を書きます。 その式はboolean型に評価される必要があり、trueならif文のブロック内が実行され、falseなら実行されず飛ばされます。

if文の種類

if文にはelse節と言って、falseの場合のみ実行されるブロックを付けることもできます。

int x = 10;//ここを色々変えてみてください
if(x > 0) {
    System.out.println("more than 0");
} else {
    System.out.println("0 or less");
}
System.out.println("finish!");

さらに複雑なif文

if文にはさらに、if節とelse節の間にelse-if節を好きなだけ作ることもできます。 else節はなくても構いません。

int x = 10;
if(x > 100) {
    System.out.println("more than 100");
} else if(x > 10) {
    System.out.println("more than 10");
} else if(x > 0) {
    System.out.println("more than 0");
} else {
    System.out.println("0 or less");
}

もし、xが100だとしたら、x > 100, x > 10, x > 0全てでtrueを返すので3つのブロックが実行されると思うかもしれません。 しかし、実際は上から評価して、一番最初にtrueを返したブロックを実行してif文を抜けます。

そのため、下のようなコードは意味がありません。

int x = 10;
if(x > 0) {
    System.out.println("more than 0");
} else if(x > 10) {
    //ここは絶対に実行されない
    System.out.println("more than 10")
}

x > 10がtrueを返すコードは必ずx > 0でもtrueを返します。 一番最初にtrueを返すブロックを実行するため、x > 10のブロックが実行されることはありません。

他の条件分岐文

if文の他に、switch-case文という条件分岐の文もあります。 気になる人は調べてみてください。ここでは省略します。 そこまで便利ではなく、記述が冗長で、バグが潜む危険が高い文のため、使われることはあまりありません。

if文のまとめ

if文は1つのif節と0個以上のif-else節と最後に0個か1個のelse節で構成される

最初にtrueを返したブロックが実行され、その後if文を抜ける。

演習

2つの数字のうち、大きい方を出力するプログラムの作成。

数字が0~100の間にあるか判定するプログラムの作成。

文字がa ~ zの間の文字か判定するプログラムの作成。