本来は
Java
1if( 条件式A ){
2 // 処理A
3}else if( 条件式B ){
4 // 処理B
5}else{
6 // 処理C
7}
で一つだと思います。でも仕様によってはelseもelse ifも必要が無い場合もあります。
たとえば bool isWritten という変数があり、これの値がtrueのときに処理Aをそれ以外なら処理Bをする場合、
isWritten == true -> 処理A
isWritten == false -> 処理B
ですけど、これを上記の基本的なものに埋め込むと
Java
1if( isWritten == true ){
2 // 処理A
3}else if( isWritten == false ){
4 // 処理B
5}else{
6 // 処理C
7}
となります。ですがbool型は trueかfalseしかありません。最初のif( isWritten == true )
を満たさないのならもう一方の falseになっているはずです。二択のうちの一つが存在しないならもう、一択しかないですね。
ということはisWritten == true
を満たさない時点でisWritten == false
も決まったようなものです。
(言語によってはundefinedとかのような値になったりしますが、常に何らかの値が入っているという前提で)
trueじゃないならfalse, falseじゃないならtrueという感じなのでelseが出てくる理由はないですよね。
だって書いてもそこに到達するものないじゃないですか。
仮にbool isWritten = false;
だとしたら、if( isWritten == true )
は満たさないので、次のelse ifに。
else if( isWritten == false )
は満たしますからelseには行きません。
でも、先ほど書いたように trueならfalseを満たさず、falseならtrueを満たさないという排他的な関係なので、
「else ifではなくelseで対応可能」となります。
なので
Java
1if( isWritten == true ){
2 // 処理A
3}else{
4 // 処理B
5}
と書けますね。isWritten == true を満たさないなら 値はfalseってことは確定だからelseでも対応可能ですね。
で、int型で複数の値になる場合 ( 選択肢が { 1, 2, 3, 4, ... } と複数あるとか )は else ifを使って分岐させる。
Java
1int a = 10;
2if( a == 1 ){
3 // 処理A
4}else if( a == 2 ){
5 // 処理B
6}else if( a == 3 ){
7 // 処理C
8}...{
9...
10}else{
11 // 処理X
12}
でも変数に入っている値は「常に 1≦値≦10でないといけない」場合でもたとえばa = 130のような範囲外の値になっていたりすることもある。
そうなるとelse ifだけでは足りない。やるとしたらもう人間の手には負えません。
だって -1304213 とかみたいな値を入れられる可能性があるんですよ? マイナスだけじゃなくてプラスも。
面倒ですね。ということでelseを使って「今までの条件に該当しないなら」つまり、範囲外の値ならとする。
そしてこの値が文字列だとどうでしょうか?「はろー」「ぐっばい」…といろんな候補があるのでその分岐のためにelse ifを使う。
だから基本は最初に挙げたelse ifとelseも使ったヤツで、必要な分使っていけばいいということです。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/10/30 03:26
2022/10/30 04:01