if文とは
Javaのif文は、条件分岐をするための構文で、指定された条件が成り立つ場合に、ある処理を実行することができます。
「家から学校までの距離が2km以下」であれば、「歩いて学校に行く」が、「2kmを超える場合」は「自転車で行く」という条件があった場合、以下のようにif文を書くことができます。
※構文は下で説明しますのでざっくりみてください。
int distance = 2500; // 距離はメートルで表す
if (distance <= 2000) {
System.out.println("歩いて学校に行く");
} else {
System.out.println("自転車で学校に行く");
}
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
だった場合に実行する処理を指定するために使用されます。
例えば、以下のように記述されている場合、x
が 0
以下の場合に「xは0以下です」と出力されます。
if (x > 0) {
System.out.println("xは正の数です。");
} else {
System.out.println("xは0以下です。");
}
else
文は、if
文と組み合わせることで、条件によって実行する処理を分けることができます。
else if文
else if
文は、複数の条件を指定するために使用されます。
if
文で条件が false
だった場合に、別の条件を判定する場合に使用します。
例えば、以下のように記述されている場合、x
が 0
の場合に「xは0です」と出力され、x
が 0
より大きい場合に「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以下です。");
}
コメント