論理値

論理(boolean)型とtrue, falseについてもう少しだけ説明します。「論理値を返すメソッド」について腑に落ちなかった人は読み進めてみてください。

booleanというのはJavaに用意されている型の1つで、int, double, Stringなどと同様にboolean型の変数を宣言することもできます。また、その変数に記憶させられる値は「true」「false」のいずれかです。

boolean flag = true;

この値は、JOptionPane.showMessageDialogを使って表示させることもできます。以下のような命令を書いてみましょう。

JOptionPane.showMessageDialog(null, true);
JOptionPane.showMessageDialog(null, false);

全ての条件式の計算結果は、このtrueまたはfalseになります。そのため、次のようなプログラムを書けます。

int a = 10;
int b = 20;
boolean c = (a == b);
boolean d = (a < b);
JOptionPane.showMessageDialog(null, c);
JOptionPane.showMessageDialog(null, d);

さらに、論理値どうしを条件式で比較することもできます。数値と違って論理値に大小関係はありませんので、<, >, <=, >=などの演算子は使えません。使える演算子は==と!=だけです。

JOptionPane.showMessageDialog(null, true == true);
JOptionPane.showMessageDialog(null, false != false);

そう考えると、授業で紹介した「if (isInvalid(…))」や「if (!isValid(…))」というのは次のように書いても同じです。

if (isInvalid(rate) == true) {
    ...
}
if (isValid(rate) == false) {
    ...
}

このように書くと、「isInvalidがtrueを返すとき~」「isValidがfalseを返すとき~」というように読めるようになりますので、論理値という考え方が苦手だという人は試してみるといいと思います。

余談ですが、先ほどのプログラム「Rating.java」はもっと単純に書くこともできます。下記のように書き換えて動作を確認してみましょう。わかりにくい場合は、このメソッドの結果をJOptionPane.showMessageDialogに渡してメッセージダイアログで表示してみましょう。

boolean isInvalid(int rate) {
    return (rate < 0 || rate > 5);
}
boolean isValid(int rate) {
    return (0 <= rate && rate <= 5);
}