はじめに
比較演算子のところでちょっとだけ使った「条件」について、ちゃんとまとめようと思う。
「if」と「else」を使った構文についてだよー。
if構文
ifは条件を表す構文。
使い方としては以下のような感じ。
if(条件を記入){カッコ「()」内で書いた条件が合えばこの中に書いたプログラムが処理される}
この「if」は続けて使うことができる。
例えを下に記した。※パッケージとクラス、メインメソッドは省略
int x=10;
int y=10;
if(x<y) {
System.out.println(“xはyより小さい”);
}
if(x==y) {
System.out.println(“xはyと同じ”);
}
if(x>y) {
System.out.println(“xはyより大きい”);

これを実行すると…
「xはyと同じ」と表示される。
「if」は()内の条件が合えば、()の次にある{}内に書かれたプログラムが処理される。
ということは、()の条件が合わなければ{}内のプログラムは処理されないということ。
条件が合わなければ、その行の「if」構文は無視されて次の行のプログラム処理が行われる。
上の式では「if」構文が3回使われている。
一つ目のifの条件は「x<y」。
xの値は10、yの値も10と宣言されているから、xとyの値は同じということ。
だから「x<y(xはyより小さい)」という条件には合わない。
よって、ここでのif構文の{}内のプログラム処理は行われない。
そして次の行のプログラムが処理されるということ。

次ー。
次の行には2つ目のif構文。
ここの条件は「x==y(xとyが同じ値)」。
xとyの値は「10」と宣言されているから、同じ値ということ。
よってifの条件に合致する。
これにより、if構文の{}内のプログラムが処理される。
ここでは「System.out.println(“xはyと同じ”);」と書かれているから、画面には「xはyと同じ」と表示される。
ここで注意するのは、プログラムはここで終わりではないということ。
ただif構文を並べただけだと、if構文がある分だけ処理が行われる。
よって3つ目のif構文が処理される。
ここの条件は「x>y」。
「xはyより大きい」という条件は間違っている(int x=10、int y=10だから)ため、{}内は処理されない。
プログラムがすべて処理され、ここで画面に表示されるのは「xはyと同じ」という文字のみ。

条件に合うのは2つ目のif構文だけだからね。しょうがないね。
3つ目のif構文の条件が合っていたら、3つ目の{}内のプログラムもちゃんと処理されるよー。
「1つ目の条件が合っていれば2つ目以降のif構文のプログラムを処理してほしくない」っていうときは、「else if」を使うことで解決する。

ifだけだと、全部処理される。
else ifを使うと条件に合うものがあったらそれ以降のif構文は処理されない。
else if構文を使った条件
if構文では記述したプログラムはすべて処理される。
でも「else if」を使うと、条件に合ったものがあった時点でそれ以降のif(else if)は処理されなくなるのだ。
使い方としては、
if(条件その1){条件その1を満たせば処理されるプログラム;}
else if(条件その2){条件その2を満たせば処理されるプログラム;}
else if(条件その3){条件その3を満たせば処理されるプログラム;}…
といった感じ。
else ifを使う時でも、最初の条件は「if」を使う。
elseは英語で「そうしないと~、他の」という意味がある。

「最初のif条件に合わないから他の~」という感じ。
最初の条件に合わなければ条件2を見て、それが合わなかったら条件3を…というように進んでいく。
int x=10;
int y=10;
if(x<y) {
System.out.println(“xはyより小さい”);
}else if(x==y) {
System.out.println(“xはyと同じ”);
}else if(x>y) {
System.out.println(“xはyより大きい”);
最初の条件のif(x<y)は「xが10、yも10と同じ」だから条件に合わない。
ここの{}内は処理されず、次の「else if」の条件に処理が移る。
2つ目の条件はelse if(x==y)。
「xが10、yも10と同じ」だからこの条件は合う。
ということで{}内の処理が実行され、「xはyと同じ」と表示される。
if構文をただ並べていっただけなら、2つ目の条件が正しいにせよ間違っているにせよ3つ目のプログラムも処理された。
でもelse ifでは条件が合うものが見つかった時点でそれ以降のelse ifのプログラムは処理されないのだ。
ここでは2つ目の「else if」構文の条件に合致している。
ということで、3つ目の条件は処理されない(無視される)。

if構文だけのプログラムでも3つ目は処理されてないように見えるけど、条件に合ってないから表示されてないだけ。
もし2つ目と3つ目の()内の条件が合っていても、else if構文を使っていたら2つ目が合っている時点で3つ目のプログラムは処理されない。
if構文だけなら条件に合うものすべて処理される。

違いをおわかりいただけただろうか。
if構文とelse if構文で同じ結果が得られていても、内部で処理されている内容が違うということ。
最後のelse if(){}のif()は省略可能
ちなみに、else if構文で、else if(){}else if(){}…と続けてきて、最後のelse if(){}のif()は省略することができる。
if(条件その1){条件その1を満たせば処理されるプログラム;}
else if(条件その2){条件その2を満たせば処理されるプログラム;}
else if(条件その3){条件その3を満たせば処理されるプログラム;}…
…else{これまでの条件に当てはまらない場合に処理されるプログラム}
最後の「else」は条件を記入する「カッコ()」は不要。
というのも、これまで条件に挙げてきたifやelse ifのどれにも当てはまらない場合に処理されるから。
if else構文のところで使った例の最後の部分をelseにしたものが以下。
int x=10;
int y=10;
if(x<y) {
System.out.println(“xはyより小さい”);
}else if(x==y) {
System.out.println(“xはyと同じ”);
}else {
System.out.println(“xはyより大きい”);
最後のelseは、一つ目のif(x<y)や2つ目のelse if(x==y)に当てはまらない場合に処理されるものということ。

最後まで(x>y)と条件をいちいち書かなくても、elseを使って「それ以外」で済ませば簡単~。
ここのプログラムを実行しても、得られる答えはこれまでと同じ「xはyと同じ」。
ちょっと注意
ifやelse if構文では{}を使うというのは理解できたと思う。
ここでルールを思い出してほしい。
文の最後には「セミコロン(;)」を必ずつけなくてはならない(int x=10;などの「;」)。
でも{}を使うときは{}の後に「;」をつけない。
これはルール。
「;」は{}内の文章の最後につけること。
if(x<y) {
System.out.println(“xはyより小さい”);
}

{}内のプログラムの最後には「;」がいるの。
{}に「;」が不要なのはパッケージやメインメソッドを作ったときにも見てわかるはずだから、もう一度確認するといい。
Eclipseで作ったプログラムの最後の行を見たら、大きいカッコの閉じる部分「}」でおわってるはず。
まとめ
条件の構文を使うときはまず始めに「if」を使う。
条件に合致した時点で次の条件プログラムを処理してほしくなかったら「else if」を使う。
最後の行の条件は「else」を使って、「これまでの条件に合っていない場合」ということを表すことができる。
順番としては if ⇒else if⇒else if⇒else if⇒else if…⇒…else
最後のelseには条件を書く「()」はいらない。

簡単にまとめるとこんな感じー。
コメント