論理演算子 |
| | | | | | | |  |  | |  |  | | |  |  | |  |  | | | | | 論理演算子は 比較演算子と同じで条件の判定に使う記号。
この論理演算子を使うと複数の条件で判定できる。 (つまり、同時にたくさん条件式を使える。) |
| | | | |  |  | |  |  | | |  |  | |  |  | | | | |
| | | |
|
|
|
| | | | | | | |  |  | |  |  | | |  |  | |  |  | | | | | 例えば、&&演算子を使えば、
「もし経験値が700以上で かつ 経験値が800以下なら エクストラ処理を実行」
という判定が、一つの条件式で書ける。
この場合は、両方の条件がtrueに なった場合のみ実行される。 |
| | | | |  |  | |  |  | | |  |  | |  |  | | | | | | | | |
|
|
|  | |  | |
論理演算子 && を使った例 | ・・・ |
| |
| 034 | | //もしyuushaExpが 700以上 で 800以下 なら | | 035 |
| if(yuushaExp >= 700 && yuushaExp <= 800){ |
| 036 |
| //特別レベルアップ!メッセージを表示 |
| 037 |
| System.out.println("エクストラレベルアップ!!!"); |
| 038 | | | | 039 |
| } |
| ・・・ |
| |
|
|
| |
| |
| | の 全ての条件式 が true の場合 ブロック内 が 実行される |
|
| |
| |
| この場合、変数yuushaExpの値 が 700以上 かつ 800以下 なら実行される |
| |
| |  | |  |
|
|
 | |  | | 論理演算子一覧 |
| 演算子 | 種類 | 書式 | 内容 | | | 論理 | A | B | AかBがtrueならtrueを返す。 必ず両方チェックする。 例:a | b | || | 論理 | A || B | AかBがtrueならtrueを返す。例:a || b | & | 論理 | A & B | AとBがtrueならtrueを返す。 必ず両方チェックする。 例:a & b | && | 論理 | A && B | AとBがtrueならtrueを返す。例:a && b | ! | 論理 | !A | Aがfalseならtrueを返す。例:!(a < b) | ^ | 論理 | A ^ B | AとBが同じ(両方がtrueかfalse)でなければtrueを返す。例:a ^ b |
|
|
|
| |  | |  |
|
|
 | |  | | 論理演算子一覧 改変 |
| 演算子 | 種類 | 書式 | 意味 | 内容 | | | 論理 | A | B | AまたはBなら | AかBがtrueならtrueを返す。 必ず両方チェックする。 例:a | b | || | 論理 | A || B | AまたはBなら | AかBがtrueならtrueを返す。 例:a || b | & | 論理 | A & B | AかつB | AとBがtrueならtrueを返す。 必ず両方チェックする。 例:a & b | && | 論理 | A && B | AかつBなら | AとBがtrueならtrueを返す。 例:a && b | ! | 論理 | !A | A以外なら | Aがfalseならtrueを返す。 例:!(a < b) | ^ | 論理 | A ^ B | AとBが同じ(両方がtrueかfalse)でなければ | AとBが同じ(両方がtrueかfalse)でなければtrueを返す。 例:a ^ b |
|
|
|
| |  | |  |
| | | | | | | | |  |  | |  |  | | |  |  | |  |  | | | | | 論理演算子には いろいろな種類がある。
その中でよく使うもの。 |
| | |
| |  |  | |  |  | | |  |  | |  |  | | | | | | | | |
|
|
|
|
| | | | | | | |  |  | |  |  | | |  |  | |  |  | | | | | &&演算子
日本語で言えば「かつ」の意味。
&&演算子は「○○で、かつ××なら処理を実行する」 というように、両方の条件を満たした場合だけ実行される。
使う記号は「&&」。&(アンド)を2つつなげて書く。 |
| | | | |  |  | |  |  | | |  |  | |  |  | | | | | | | | |
|
|
|  | |  | |
論理演算子 && を使った例 | ・・・ |
| |
| 034 | | //もしyuushaExpが 700以上 で 800以下 なら | | 035 |
| }else if(yuushaExp >= 700 && yuushaExp <= 800){ |
| 036 |
| //特別レベルアップ!メッセージを表示 |
| 037 |
| System.out.println("エクストラレベルアップ!!!"); |
| 038 | | | | 039 |
| //もしyuushaExpが 555 か 666 なら |
| 040 |
| }else if(yuushaExp == 555 || yuushaExp == 666){ |
| ・・・ |
| |
|
|
| |
| |
| | の 全ての条件式 が true の場合 ブロック内 が 実行される |
|
| |
| |
| この場合、変数yuushaExpの値 が 700以上 かつ 800以下 なら実行される |
| |
| |  | |  |
|
| |
|
|
| | | | | | | |  |  | |  |  | | |  |  | |  |  | | | | | ||演算子
日本語で言えば「~または」の意味。
「○○または××なら処理を実行する」というように どれか一つ以上の条件を満たした場合実行される。
使う記号は「||」。| を2つつなげて書く。 |
| | | | |  |  | |  |  | | |  |  | |  |  | | | | | | | | |
|
|
|  | |  | |
||演算子の例 |
| ・・・ |
| |
| 039 |
| //もしyuushaExpが 555 か 666 なら |
| 040 |
| }else if(yuushaExp == 555 || yuushaExp == 666){ |
| 041 |
| //呪いにかかった!レベルダウンメッセージを表示 |
| 043 |
| System.out.println("呪いにかかった!レベルダウン!!"); |
| 044 |
| |
| 045 | | //それ以外なら | | 046 |
| }else{ |
| ・・・ |
| |
|
|
| の どれかの条件式 が true の場合 ブロック内 が 実行される |
|
| この場合、変数yuushaExpの値 が 555 または 666 なら実行される |
|
| |  | |  |
|
| |
|
|
|
 | |  | | !演算子の例
if( !(yuushaExp >= 100) ){・・・ |
| |
yuushaExpが100以上 以外 だったら true になる。 つまり yuushaExp が 99以下 の場合 実行される。
|
| |  | |  |
|
| | | | | | | | |  |  | |  |  | | |  |  | |  |  | | | | | !演算子
「以外」を表す演算子。
条件式の前に付ける事で、 条件式「以外」の場合にtrueになる。
感嘆符(エクスクラメーションマーク)を使う。 条件式を()括弧でくくって、前に「!」を書く。 |
| | | | |  |  | |  |  | | |  |  | |  |  | | | | | | | | |
|
|
| |
|
|
| | | | | | | |  |  | |  |  | | |  |  | |  |  | | | | | 論理演算子は 他の論理演算子や比較演算子、 ()括弧の優先順位などと組み合わせて、 様々な判定が出来る。
例えば 「A で、かつ B」で、 かつ 「C または D」 みたいな判定もできる。
|
| | | | |  |  | |  |  | | |  |  | |  |  | | | | | | | | |
|
| | | | | | | | |  |  | |  |  | | |  |  | |  |  | | | | | 例:
「勇者攻撃力が 500以上で かつ 1000以下」で、 かつ 「魔法石が7個 または 魔法薬を5個 持っている場合」、超必殺技発動! |
| | | | |  |  | |  |  | | |  |  | |  |  | | | | |
| | | |
|
|
|
| | | | | | | |  |  | |  |  | | |  |  | |  |  | | | | | 判定の順位
通常、&&演算子と||演算子を一緒に使った場合は、 &&演算子が先に評価される。 (掛け算、割り算が、足し算、引き算より先に計算されるのと同じ。)
()括弧を使うことで、判定の優先順位を変えられる。 &&演算子と||演算子を一緒に使う場合は 判定の優先順番が分かりづらくなるので 自分の実行したい順番に条件式に()括弧を付ける様にする。
判定する順番で結果が変わるから注意すること。 |
| | | | |  |  | |  |  | | |  |  | |  |  | | | | | | | | |
|
|
|  | |  | |
論理演算子 複数条件の優先順位例(括弧有り) | ・・・ |
| |
| 020 |
| int yuushaAttack = 0;//勇者攻撃力 0に初期化 |
| 021 |
| int magicGem = 0;//魔法石 0に初期化 |
| 022 |
| int magicPotion = 5;//魔法薬 5に初期化 |
| 023 |
| |
| 024 | | //もし勇者攻撃力が 500以上 で 1000以下 で、 かつ | | 025 |
| //魔法石が7個 または 魔法薬を5個 なら |
| 026 |
| if((yuushaAttack >= 500 && yuushaAttack <= 1000)&& |
| 027 |
| (magicGem == 7 || magicPotion == 5)){ |
| 028 |
| //超必殺技発動メッセージを表示 |
| 029 |
| System.out.println("超必殺技発動!!!"); |
| 030 |
| } |
| ・・・ |
| |
|
| 括弧を書いた場合、 括弧が優先的に評価され、条件式が以下のように解釈される。 | 条件式の内容 | 勇者攻撃力が 500以上 で 1000以下 | かつ | 魔法石が7個 または 魔法薬を5個 |
|
|
|
|
| |  | |  |
|
|  | |  | |
論理演算子 複数条件の優先順位例(括弧なし) | ・・・ |
| |
| 020 |
| int yuushaAttack = 0;//勇者攻撃力 0に初期化 |
| 021 |
| int magicGem = 0;//魔法石 0に初期化 |
| 022 |
| int magicPotion = 5;//魔法薬 5に初期化 |
| 023 |
| |
| 024 | | //もし勇者攻撃力が 500以上 で 1000以下 で、 かつ | | 025 |
| //魔法石が 7個 または 魔法薬を 5個 なら |
| 026 |
| if(yuushaAttack >= 500 && yuushaAttack <= 1000 && |
| 027 |
| magicGem == 7 || magicPotion == 5){ |
| 028 |
| //超必殺技発動メッセージを表示 |
| 029 |
| System.out.println("超必殺技発動!!!"); |
| 030 |
| } |
| ・・・ |
| |
|
| 括弧を書かなかった場合、 &&演算子が優先的に評価され、条件式が以下のように解釈される。 | 条件式の内容 | 勇者攻撃力が 500以上 で 1000以下 で 魔法石が 7個 | または | 魔法薬が 5個 |
|
|
|
|
| |  | |  |
|
|
 | |  | | 演算子の結合順位 |
| 優先順位 (上ほど高い) | 種類 | 1 | ! 論理演算子 | 2 | 算術演算子(計算) | 3 | 比較演算子(比較) | 4 | && 論理演算子 | 5 | || 論理演算子 |
|
|
|
| |  | |  |
| | | | | | | | |  |  | |  |  | | |  |  | |  |  | | | | | 条件式で演算子を使った場合の評価の順番。
1.計算 2.比較 3.&& 4.||
結果に影響が出るから気をつけること。 |
| | | | |  |  | |  |  | | |  |  | |  |  | | | | |
| | | |
|
|
|
| | | | | | | |  |  | |  |  | | |  |  | |  |  | | | | | 論理演算子で、 条件式をいくつつなげて書いてももいい
条件式はいくらでもつなげて評価できる。
ただし、分かりづらくならない程度にしておくこと。 |
| | | | |  |  | |  |  | | |  |  | |  |  | | | | |
| | | |
|
|
| | | | | | | |  |  | |  |  | | |  |  | |  |  | | | | | 演算子の条件判定には 変数もいっしょにいくつ使ってもいい。 何個でも使って条件判定出来る。
変数の型が違っていても、一緒に使える。 |
| |
| | |  |  | |  |  | | |  |  | |  |  | | | | | | | | |
|
|
 |
|
 |
|
論理演算子 複数条件例 |
・・・ |
|
|
|
|
|
//もしyuushaAttack が 500以上 で 1000以下 で、 かつ |
|
|
|
//魔法石が7個 または 魔法薬を5個 なら |
|
|
|
if((yuushaAttack >=
500 && yuushaAttack <= 1000)
&& |
|
|
|
(magicGem
== 7 ||
magicPotion
== 5)){ |
|
|
|
//超必殺技発動メッセージを表示 |
|
|
|
System.out.println("超必殺技発動!!!"); |
|
|
|
} |
|
・・・ |
|
|
|
|
変数を複数使える |
|
|
|
 |
|
 |
|
|
|
 | |  | |
論理演算子のまとめ(処理) | | 論理演算子の処理の内容 | 複数の条件式を同時に使える(いくつでもつなげられる) | 論理演算子の評価には優先順位がある | &&演算子と||演算子を一緒に使った場合は、&&演算子が 先に評価される | 他の論理演算子や比較演算子と組み合わせて使える | ()括弧で判定の優先順位を変えられる | 条件式の判定する順番で結果が変わる | 変数もいっしょにいくつでも使える |
|
|
| |  | |  |
|
|  | |  | |
論理演算子のまとめ(命令) | | &&演算子 |
全ての条件式 が true の場合 ブロック内 が 実行される |
日本語で言えば「~かつ」の意味 英語で言えば「AND」の意味 |
| ||演算子 |
どれかの条件式 が true の場合 ブロック内 が 実行される |
日本語で言えば「~または」の意味 英語で言えば「OR」の意味 |
| !演算子 |
条件式 が false の場合 ブロック内 が 実行される |
日本語で言えば「~以外」の意味 |
|
|
|
| |  | |  |
|
|