広告 Java プログラミング 入門

新米プログラマーによるJava入門-その4(条件分岐)

2020年7月11日

前回は変数、データ型について大雑把に説明しました。
今回は「条件分岐」について説明したいと思います。
前回の記事はこちら。

[st-card-ex url="https://www.dice-programming-etc.com/2020/07/08/%e6%96%b0%e7%b1%b3%e3%83%97%e3%83%ad%e3%82%b0%e3%83%a9%e3%83%9e%e3%83%bc%e3%81%ab%e3%82%88%e3%82%8bjava%e5%85%a5%e9%96%80-%e3%81%9d%e3%81%ae%ef%bc%93/" target="_blank" rel="nofollow" label="" name="" bgcolor="" color="" readmore=""]

条件分岐って?

そもそも条件分岐って何?ということですが、簡単に言うと「Aが正しかったらBの処理に行ってね、間違っていたらCの処理に行ってね。」という感じです。

if文

プログラミングにおいて条件分岐は使えて当たり前のものになります。むしろ使えないとプログラミングで何かの処理を作ろうとしても思い描いた機能を作れません。
ここで紹介するのが「if文」です。
英語が分かる人であれば「if」の意味から察することができると思います。

•if
「もし~ならば」

 

つまりプログラム上では「条件が正しければAの処理へ正しくなければBの処理へ」という感じです。では、簡単な条件分岐のプログラムを書いていきます。

int a = 10;

if(a > 5){
    System.out.println("5より大きいです!!");
}
else{
    System.out.println("5以下です!!");
}

こんな感じになります。何をしているのかと言うと......

1行目:整数型intの変数aに「10」を代入。
3行目:は5より大きいか比較。
4行目:aが5より大きければ「5より大きいです!!」と表示する。
7行目:aが5以下であれば「5以下です!!」と表示する。

こんな感じです。おそらくここで難しいと感じた人はいないでしょう。
if(~)のカッコ内に条件を書き、条件に一致しなければelseに流すという感じです。
でも中には「1の条件に当てはまらなかったら2の条件、3の条件へ...」という人もいるでしょう。その場合は次のように書くことができます。

int a = 10;

if(a == 11){
    System.out.println("11です!!");
}
else if(a == 8){
    System.out.println("8です!!");
}
else if(a == 5){
    System.out.println("5です!!");
}
else{
    System.out.println("5でも8でも11でもありません!!");
}

このように「if ~ else if ~ else if ~ ...... ~ else」という感じで「else if」を続けることで第1の条件、第2の条件、第3の条件......と続けることができます。
今回は条件に対して文字列を出力しているだけですが、基本的には何らかの処理であれば書くことができます。
書く処理については学びながら追々覚えていけばいいと思います。

ただ、「else if」が何度も何度も続くとさすがに見栄えが悪くなってきます。
そこで登場するのが「switch文」です。

switch文

どんな感じなのかは見たほうが早いですね。

int a = 11;

switch(a){
    case 5: System.out.println("5です!!");
            break;
    case 8: System.out.println("8です!!");
            break;
    case 11: System.out.println("11です!!");
            break;
    default: System.out.println("5でも8でも11でもありません!!");
            break;
}

こんな感じで出力はこうなります。

11です!!

「break」という単語があると思いますが、これがないと一致した場所から全て出力されてしまいます。

int a = 8;

switch(a){
    case 5: System.out.println("5です!!");
    case 8: System.out.println("8です!!");
    case 11: System.out.println("11です!!");
    default: System.out.println("5でも8でも11でもありません!!");
}

出力内容

8です!!
11です!!
5でも8でも11でもありません!!

「break」の役割は、そこで処理を終わるという役割です。
ただ、意図的に「break」を付けない場合もあります。

int a = 2;

switch(a){
    case 1: 
    case 2: 
    case 3: 
    case 4: 
    case 5: System.out.println("1~5のどれかです!!");
            break;
    case 8: System.out.println("8です!!");
            break;
    case 11: System.out.println("11です!!");
            break;
    default: System.out.println("5でも8でも11でもありません!!");
            break;
}

このようにすれば1~5のいずれかの場合に

1~5のどれかです!!

と表示できます。
条件分岐は主に「if文」と「switch文」と覚えてください。

番外編:三項演算子

int a = 10;
String str = null;

if(a == 11){
    str = "11です!!";
}
else if(a == 8){
    str = "8です!!";
}
else if(a == 5){
    str = "5です!!";
}
else{
    str = "5でも8でも11でもありません!!";
}

System.out.println(str);

この条件分岐を三項演算子で書いてみましょう。

int a = 10;
String str = null;

str = a == 11?"11です!!":a == 8?"8です!!":a == 5?"5です!!":"5でも8でも11でもありません!!";
System.out.println(str);

4行目になります。ここまで来ると流石にわかりづらいですねw
書き方としては.......

条件式 ? 式1 : 式2

こんな感じですね。式1に条件がtrueだった場合の処理を書き、式2に条件がfalseだった場合の処理を書きます。
ただ、例にあるように多すぎるとわかりづらくなるという弱点があります。
なのでせいぜい「if ~ else if ~ else」の3つで済むくらいの条件分岐まででの使用が可読性を保つ上では限界かもしれません。
まぁ、書き方次第ではわかりやすくできますよ。

int a = 10;
String str = null;

str = a == 11?"11です!!"
     :a == 8?"8です!!"
     :a == 5?"5です!!"
     :"5でも8でも11でもありません!!";
System.out.println(str);

こんな感じですね。まぁ、使うかどうかは本人次第なので特に「こうしろ」とは言いません。ただ、チームで開発する場合は他の人がプログラムを見ることを考え、少しでも分かりやすいほうを選びましょう。

条件分岐についての大雑把な説明は以上です。
次は「繰り返し」について書きましょうかね。

-Java, プログラミング, 入門
-, ,