Javaの世界で選択肢を与えたいとなった場合に使用するのが条件分岐です。
その中でも最も有名でよく使用されているのが、if文です。
以前if文について簡単に紹介はさせていただきましたが、前回の記事では紹介しきれなかった部分もたくさんあるので、今回はさらに詳しく解説していきます。
今回の記事ではif文の具体的な使用例から三項演算子等の少し応用的な内容まで解説していきますので、ぜひ参考にしてみてください。
比較演算子を使用してのif文
ではまず紹介するのが不等号などの比較演算子を使用してのif文について解説します。
最も使用されているといっても過言ではないのが比較演算子を使用してのif文です。
前回の記事でif文の条件式はboolean型の値で判断していると話しましたが、直接trueやfalseを条件式に記入するというのは少ないです。
それよりも比較演算子を使用してtrue、falseの判定を行う方が圧倒的に多いといっても過言ではありません。
では早速具体的な使用方法と実行結果を基に解説していきます。
【使用例】
public class ex {
public static void main(String[] args){
int a = 4;
if(a < 5) {
System.out.println("値は4以下です。");
}else if(a == 5) {
System.out.println("値は5です。");
}else {
System.out.println("値は6以上です。");
}
}
}
【実行結果】
値は4以下です。
上記ですとaの値は4のためif文内の条件式(a < 5)が成り立つので「値は4以下です。」という結果となります。
aの値を5に変更するとif文の条件は満たさず、else if文で条件式(a == 5)が成り立つため「値は5です。」となります。
そしてaを6とするとif文も、else if文も条件式を満たさなくなるため、else文の「値は6以上です。」という結果が表示されるようになります。
このような比較演算子を使用した条件分岐が最もポピュラーなものです。
因みに比較演算子は下記記事で紹介している関係演算子のことですので、気になる方は見てみてください。
【Java】演算子の種類・使用方法を徹底解説 | 初心者用 | エンジニアKISARAGIの備忘録 (kisaragi-it.com)
論理演算子を使用してのif文
次にご紹介するのは論理演算子を使用したif文です。
これは一つのif文に条件を2つ以上記入したい場合に使用します。
使用する論理演算子は下記3つです。
演算子 | 使用例 | 説明 |
---|---|---|
&& | a && b | aとbがともにtrueならtrueを、どちらか片方でもfalseならfalseを返す |
|| | a || b | aとbのどちらか片方でもtrueならtrueを、両方ともfalseならfalseを返す |
! | !a | aはtrueならfalseを、aがfalseならtrueを返す |
では実際の使用例と実行結果について見ていきます。
【使用例】
public class ex2 {
public static void main(String[] args){
int a = 27;
String b="男性";
if(a <= 30 && b == "男性") {
System.out.println("30歳以下で男性");
}else if((a <= 50) || (b == "女性")) {
System.out.println("50歳以下もしくは女性");
}else if(!(a < 70) && (b == "男性")){
System.out.println("70際以上");
}else {
System.out.println("対象外");
}
}
}
【実行結果】
30歳以下で男性
上記コードですと、a=27でb=”男性”のため、一つ目のif文で30歳以下かつ男性という条件を満たすため「30歳以下の男性」という結果となります。
そしてa=40に変更すると一つ目のelse if文記載の50歳以下または女性という条件に当てはまり「50歳以下もしくは女性」と出力されます。
仮にa=27のままで、b=”女性”に変更した場合でも同様の結果となります。
次にa=80とすると「!(a < 70)」かつ「b==”男性”」という条件を満たすようになります。
「!(a < 70)」は70歳未満ではないという意味のため、70以上という条件となります。
このように複数条件を使用したい場合に論理演算子を使用します。
入れ子構造でのif文使用方法
入れ子構造でのif文使用方法についても解説していきます。
と言っても一つのif文を使用する場合と何も変わりません。
実際に記載したコードとその実行結果が下記となります。
【使用例】
public class ex3 {
public static void main(String[] args){
int a = 27;
String b="男性";
if(a <= 30) {
if(b == "男性") {
System.out.println("30歳以下で男性");
}
else{
System.out.println("30歳以下で女性");
}
}
}
}
【実行結果】
30歳以下で男性
まず一つ目のif文で「a<=30」という条件式を満たすため二つ目のif文に進むことができます。
二つ目のif文では「b==”男性”」という条件を満たしたので、「30歳以下で男性」という出力結果となります。
「b==”女性”」に変更することで「30歳以下で女性」と出力も可能です。
このようにif文を入れ子構造にすることでプログラムの記載方法の幅が広がることが分かっていただけたと思います。
ループの脱出時にif文を使用
if文はループを脱出したい場合にも使用可能です。
ある条件を満たすまで(いつその条件を満たすかわからない)ループを実施して、条件を満たしたと同時にループから抜けるという方法が可能となります。
下記のようにif文内にbreak文を記載することで、aの値が30となったと同時に「30歳になりました!!」と出力してwhile文から抜けます。
public class ex4 {
public static void main(String[] args){
int a = 0;
while(true) {
if(a == 30) {
System.out.println("30歳になりました!!");
break;
}
a++;
}
}
}
上記break文を記載しないと無限ループとなり、ずっと「30歳になりました!!」と表示し続けます。
そのためbreak文を記載することで無限ループから脱出しているのです。
ループから脱出するときはbreak文を使用しましたが、他にもcontinue文というものが存在します。
またfor文やwhile文の詳細記事を書こうと考えているので、そこで詳しく記載しようと思います。
三項演算子の使用方法
最後に解説するのは三項演算子というif-else文を一行に省略できる画期的なものです。
見た目はif-else文からかけ離れたものとなっていますが、一行で書けるというメリットが存在します。
実際の使用例と実行結果は下記のようになっています。
【使用例】
public class ex5 {
public static void main(String[] args){
int a = 17;
String b=(a < 20) ? "私はまだ成人していません" : "私はもう成人しています";
System.out.println(b);
}
}
【実行結果】
私はまだ成人していません
三項演算子と言われる場所は「(a < 20) ? “私はまだ成人していません” : “私はもう成人しています”」です。
aが20未満なら「私はまだ成人していません」となり、20以上なら「私はもう成人しています」という結果となります。
三項演算子は下記のような構成となっています。
条件式 ? trueの場合 : falseの場合
少し見慣れない記載方法で慣れるのが大変そうですが、慣れるとそこまで苦ではありません。
何よりも一行で書けるという最大級のメリットがあることで美しいコードを書くことが可能となります。
まとめ
この記事ではif文を使用した条件分岐について下記項目で解説してきました。
- 比較演算子を使用してのif文
- 論理演算子を使用してのif文
- 入れ子構造でのif文使用方法
- ループの脱出時にif文を使用
- 三項演算子の使用方法
今回色々なif文の使用方法をご紹介してきましたが、何よりも心掛けていただきたいのはどうすればコードがきれいに収まるのかということです。
私はループや条件分岐を使用することで、コードを効率化し、そして見た目を美しくすることができると考えています。
無駄にif文を使いまくるのではなく、効率的に選択肢を与えるにはどのようにif文を配置すればいいのかということを考えて使用していただきたいです。
そうでないと「このif文は何のためにここで使用しているのか?」というように後から分からなくなることもあります。
そのあたりを意識することで、他の人が見てもわかりやすいコードを書けるようになり先輩からの評価も上がりますし、どこでif文を使用したらいいのかということもわかるようになります。
以上で今回の解説を終了します。
コメント