if文

スポンサーリンク
アイキャッチjava All

if文とは

Javaのif文は、条件分岐をするための構文で、指定された条件が成り立つ場合に、ある処理を実行することができます。

具体例

「家から学校までの距離が2km以下」であれば、「歩いて学校に行く」が、「2kmを超える場合」は「自転車で行く」という条件があった場合、以下のようにif文を書くことができます。

※構文は下で説明しますのでざっくりみてください。

int distance = 2500; // 距離はメートルで表す
if (distance <= 2000) {
  System.out.println("歩いて学校に行く");
} else {
  System.out.println("自転車で学校に行く");
}

if文の基本的な書き方

if文の基本構文

if文の基本的な構文は以下の通りです。

if文の基本構文
if (条件式) {
// 条件式が真(true)の場合に実行する処理
}

条件式には、比較演算子論理演算子などを用いて、真(true)または偽(false)を返す式を記述します。

条件式が真の場合は、中括弧({})内の処理が実行されます。

条件式の書き方

条件式は、比較演算子や論理演算子などを用いて式を組み立てます。以下では、条件式の書き方について説明します。

条件式は、真偽値(true/false)を返す式でtrueを返すと、if文の中の処理が実行されます。

例えば、次のようにif文を書くことができます。

if (x > 0) {
    System.out.println("xは正の数です。");
}

条件式x > 0は「xが0より大きい」という条件です。

つまり、xが正の数である場合にのみ、if文のブロック内のコードが実行されます。

if文のブロック内のコードは、System.out.printlnメソッドによって文字列をコンソールに出力します。

条件が満たされた場合に「xは正の数です。」が出力されます。

複雑な条件式を組み立てることもできます。例えば、次のように書くことができます。

if (x > 0 && y > 0) {
    System.out.println("xとyはどちらも正の数です。");
}

この例では、2つの条件式が論理演算子&&で結合されています。&&は「かつ」を表し、両方の条件がtrueである場合にのみ、if文のブロック内のコードが実行されます。

条件式x > 0は「xが0より大きい」という条件であり、y > 0は「yが0より大きい」という条件です。

つまり、xとyがどちらも正の数である場合にのみ、if文のブロック内のコードが実行されます。

if文のブロック内のコードは、System.out.printlnメソッドによって文字列をコンソールに出力します。条件が満たされた場合に「xとyはどちらも正の数です。」出力されます。

if文の応用例

else文

else文は、if文で条件が false だった場合に実行する処理を指定するために使用されます。

例えば、以下のように記述されている場合、x0 以下の場合に「xは0以下です」と出力されます。

if (x > 0) {
    System.out.println("xは正の数です。");
} else {
    System.out.println("xは0以下です。");
}

else文は、if文と組み合わせることで、条件によって実行する処理を分けることができます。

else if文

else if文は、複数の条件を指定するために使用されます。

if文で条件が false だった場合に、別の条件を判定する場合に使用します。

例えば、以下のように記述されている場合、x0 の場合に「xは0です」と出力され、x0 より大きい場合に「xは正の数です」と出力されます。

if (x > 0) {
    System.out.println("xは正の数です。");
} else if (x == 0) {
    System.out.println("xは0です。");
} else {
    System.out.println("xは負の数です。");
}

else if文は、条件によって異なる処理を実行する場合に便利です。

ネストしたif文の使い方

ネストしたif文は、if文の中に別のif文を記述することで、より複雑な条件分岐を表現するために使用されます。

例えば、以下のように記述されている場合、xが正の数の場合に「xは正の数です」と出力され、xが0の場合には「xは0です」と出力されます。

その後、yが正の数の場合には「yは正の数です」と出力されます。

if (x >= 0) {
    if (x > 0) {
        System.out.println("xは正の数です。");
    } else {
        System.out.println("xは0です。");
    }
    
    if (y > 0) {
        System.out.println("yは正の数です。");
    }
}


ネストしたif文は、複雑な条件分岐を表現する場合に便利ですが、適切なタイミングでelse文を使用することで、処理の可読性を高めることができます。

if文の注意点

条件式の誤りによるエラー

条件式の誤りによるエラーは、if文で最もよく発生するエラーの一つです。

条件式の誤りは、if文の条件式の評価結果が常に真または偽となるため、予期しない結果が得られる可能性があります。

以下は例です。

int x = 5;

if (x = 10) {
    System.out.println("xは10です。");
}

この例では、条件式 (x = 10) の結果が常に真になるため、常に “xは10です。” が出力されます。

実際には、条件式は (x == 10) である必要があります。

int x = 5;

if (x == 10) {
    System.out.println("xは10です。");
}

中括弧の書き方によるエラー

if文では、条件が真である場合に実行されるコードを {} で囲みます。

この {} は、if文で1行しか実行しない場合でも省略することができます

推奨はしません。

以下は、中括弧の書き方によってエラーが発生する例です。

int x = 5;

if (x > 0)
    System.out.println("xは正の数です。");
    System.out.println("xはゼロまたは負の数です。");

この例では、条件式 (x > 0) が真である場合に、最初の System.out.println() のみが実行され、2番目の System.out.println() は常に実行されます。

これは、2番目の System.out.println() がif文のブロックに含まれていないためです。

正しいコードは以下のようになります。

int x = 5;

if (x > 0) {
    System.out.println("xは正の数です。");
} else {
    System.out.println("xはゼロまたは負の数です。");
}


中括弧の書き方によるエラーも、注意深くコードを確認することで回避できます。

if文の使い方によるエラー

まず、if文の使い方によるエラーの一つに、複数のif文を使っているのに、それらの条件式が重複している場合があります。

この場合、最初のif文で条件が成立した場合、それ以降のif文は実行されず、意図しない結果が生じる可能性があります。

例は、xが0以上10以下である場合にメッセージを表示するつもりで書かれていますが、実際にはxが10の場合にはメッセージが表示されません。

if (x >= 0) {
    System.out.println("xは0より大きいです。");
}
if (x <= 10) {
    System.out.println("xは10以下です。");
}

これは、2つのif文で別々に条件を判定しているためです。

この場合、論理演算子を使って、以下のように書き換えることで、正しい結果を得ることができます。

if (x >= 0 && x <= 10) {
    System.out.println("xは0以上10以下です。");
}

コメント

タイトルとURLをコピーしました