条件分岐
プログラムの3つの考え方の一つ,「条件分岐」について説明する.
条件式
条件分岐は,ある条件が満たされているか,満たされていないかで判断されます.
日本語でいうと,真か偽か(あっているか,間違っているか)という真偽値を算出します.
プログラミング的に言うと,条件に対してtrue
(真)を返すかfalse
を返すかという話になります.
主な条件式は以下のとおりです.参考文献
表記 | 意味 |
---|---|
true | (データ型の復習) |
false | (データ型の復習) |
a > b | aはbより大きい |
a < b | →逆 |
a >= b | aはb以上(順番に注意 => ではありません) |
a <= b | aはb以下(順番に注意.= が右側に来ることを覚えてください) |
a == b | 基本データaと基本データbは等しい.または参照データにおいて同一オブジェクトである |
a != b | 基本データaと基本データbは等しくない.または参照データにおいて同一オブジェクトではない |
- ! a : 真偽値aの否定(NOT)(日本語にすると,aではない)
- a || b : 真偽値aと真偽値bの論理和(OR)(aまたはb)
- a && b : 真偽値aと真偽値bの論理積(AND)(aかつb)
何が返るか予想してみてください
-
解答はプログラムを実行して確認してください.
-
System.out.println(1 > 2);
System.out.println(1 < 2);
System.out.println(8 >= 9);
System.out.println(11 <= 11);
System.out.println(121 == 212);
System.out.println(121 != 212);
System.out.println(! (121 == 212));
System.out.println( (42 >= 32) && (!(true)) );
System.out.println( (42 >= 32) || (!(true)) );
if文・if-else文
最も単純な条件分岐はif
である.
条件式を設定し、
条件が真(True)の場合に実行される.
条件が偽(False)の場合,else
があればelse
が実行されるが,なければ次の処理に移る.
条件式については後述する.
int x = 8;
// IF文
if(x>=0){
System.out.println("変数xは正の整数である");
}
if(x<0){
System.out.println("変数xは負の整数である");
}
// IF-ELSE文
if(x>=10){
System.out.println("変数xは10以上である");
}else{
System.out.println("変数xは10以上ではない.");
}
// IF-ELSEIF文
if(x>=10){
System.out.println("変数xは10以上である.");
}else if(x>=5){
System.out.println("変数xは10以上ではないが,5以上である");
}else{
System.out.println("変数xは10以上ではないし,5以上ではない.");
}
// ブロック構造を省略して書く。ブロック内の命令が一つしかない場合利用できる。複数行続くと見栄えが悪くなったりする
// ブロック使ったほうがいいと思う。
if(x>=10) System.out.println("変数xは10以上である.");
// よりかは。 if(x>=10) { System.out.println("変数xは10異常である."); } のほうがまだ綺麗。
else if(x>=5) System.out.println("変数xは10以上ではないが,5以上である");
else System.out.println("変数xは10以上ではないし,5以上ではない.");
// こういう書き方している人を見たことがある。正しい書き方かはわからない。
if(x>=10)
System.out.println("変数xは10以上である.");
else if(x>=5)
System.out.println("変数xは10以上ではないが,5以上である");
else
System.out.println("変数xは10以上ではないし,5以上ではない.");
三項演算子を用いたIF記法
条件式 ? 真の場合の文 : 偽の場合の文
int x = 10;
char result;
// IF記法
if(x>=10){
result='真';
}else{
result='偽';
}
// 三項演算子を用いた文
result=(x>=10) ? '真' : '偽';
Switch文
条件分岐としてIF文のほか,Switch-case文がある.
switch(x){
case 10:
System.out.println("Xが10のときこの処理以降が実行されます");
case 20:
System.out.println("Xが20のときこの処理以降が実行されます");
case 30:
System.out.println("Xが30のときこの処理以降が実行されます");
}
通常,case文はbreak
が無い限り次の処理も実行されてしまいます.すなわち,Xが10のときは20のときと30のときのぶんも表示されてしまいます.
break
文を用意すればそれ以降は実行されなくなります.
case 10:
System.out.println("Xが10のときこの処理が実行されます");
break;
case 20:
System.out.println("Xが20のときこの処理が実行されます");
break;
case 30:
System.out.println("Xが30のときこの処理が実行されます");
break;
default:
System.out.println("どれにも該当されなかった場合に");
case文は一部の整数と文字列型のみをサポートしています.
例えば
double y = 12.8;
switch (y){
case 12.5:
// ~
case 12.8:
// ~
}
のようなことはできません.
最終更新日: 2021年4月30日