2012年3月24日土曜日

【Java】条件文と演算子

プログラムを組んでいる際、条件を与えて
その条件ごとで処理を変えたいことがあります。

例えば、
右の宝箱を開けると「ブレイブブレイド」がもらえる。
左の宝箱を開けると「チキンナイフ」がもらえる。
みたいな時です。
(やっぱりFF5。因みにsirocoはチキンナイフ派)

これをJavaで書くと次のような感じ。
if (右の宝箱を選択) {
 // ブレイブブレイドを入手
} else {
 // チキンナイフを入手
}
簡単な英語が分かれば理解できると思いますが、
if を使用して条件文を表すことができます。
if のあとの括弧内に条件をいれ、それが真の時に { } 内の処理を実行します。
else はif の条件を満たさない場合を意味し、else以降の { } 内の処理を実行します。

では次の条件をif 文で書いてみます。
『変数num が0ならば、変数str に"ぜろ"を代入し、num が1ならば、str に"いち"を代入し、それ以外なら、str に"それ以外"を代入』
int num = 0;
String str;

if (num == 0) {
 str = "ぜろ";
} else if (num == 1) {
 str = "いち";
} else {
 str = "それ以外";
}
else のあとに if を続けることで、条件を続けて書くことができます。
"=="は、その左の値と右の値が一致するという意味です。
(オブジェクトの場合は、左右のインスタンスが一致)

"=="など値の比較を行うものを、比較演算子と言います。
比較演算子には次の種類があります。

<小なり
<=小なりイコール
==イコール
>=大なりイコール
>大なり

『変数num が10より大きくて、且つ20より小さい場合は変数str に"あたり"を代入』
これをif 文で書くと、、、
int num = 12;
String str;

if (num > 10) {
 if (num < 20) {
  str = "あたり";
 }
}
条件を加えてみましょう。
『それ以外の場合は、strに"はずれ"を代入』
int num = 12;
String str;

if (num > 10) {
 if (num < 20) {
  str = "あたり";
 } else {
  str = "はずれ";
 }
} else {
 str = "はずれ";
}

なんだか見にくいですね。
おまけに"はずれ"を代入するところが重複しています。
これは次のように書きかえれます。
int num = 12;
String str;

if (10 < num && num < 20) {
 str = "あたり";
} else {
 str = "はずれ";
}
すっきりしました。
ここで出てくる"&&"はANDを意味し、短絡演算子と言います。
短絡演算子は次の種類があります。

&&論理積(AND)
||論理和(OR)

これでたいていの条件文は書けるんではないでしょうか。

ここで補足。
if 文の括弧の中に入る条件はboolean型です。
(真偽値、TRUEとかFALSEってやつ。ここででてきた)

つまり次のような書き方もできます。
int num = 12;
String str;

// boolean型の変数isHitに条件式を代入
boolean isHit = 10 < num && num < 20;

if (isHit) {
 str = "あたり";
} else {
 str = "はずれ";
}

まあ、通常はこんな書き方はしないでしょうが、
メソッドの戻り値にbooleanを使用する場合なんかはありますね。
演算子の説明をしてきたので、その他の良く使う演算子も紹介します。
まずは算術演算子。

+加算(足し算)
-減算(引き算)
*乗算(掛け算)
/除算(割り算)
%余算(余り)
int num1 = 10 / 2;       // 5を代入(10÷2)
int num2 = 2 + 8 / 2;    // 6を代入((8÷2)+2)
int num3 = (2 + 8) / 2;  // 5を代入((8+2)÷2)
演算順序は算数と同じですね。
(わからない人は小学校の算数を見直しましょう(笑))

あとは論理演算子。

&論理積(AND) 
|論理和(OR) 
^排他的論理和(XOR)
!否定(NOT)

これはあまり使わないかもしれませんが、"!"は良く使うので覚えておいたほうがいいです。
int num = 12;
String str;

// boolean型の変数isHitに条件式を代入
boolean isHit = 10 < num && num < 20;

// isHitでない、という意味になる
// つまり10以下、もしくは20以上の場合に"あたり"を代入することとなる
if (! isHit) {
 str = "あたり";
} else {
 str = "はずれ";
}


今回は以上です。
次回はオブジェクトの比較について書いてみようかな~
(最近blogばっかり書いてアプリ作りしてない気がするw)

0 件のコメント:

コメントを投稿