ITスクールの授業5日目のまとめ:三項演算子
前書き
4日目のまとめで様々な演算子を調べたが、三項演算子のほうはただの演算でなく制御とも関係があると思って、5日目に制御文と一緒に学ぶことになった。
5日目は三項演算子から制御の概念を学び始め、本格的に制御文を学ぶことになる。
三項演算子
三項演算子は、1項の演算結果を条件にして、2項か3項どっちの値を取れる演算子である。
三項演算子の構成は下記のようになる。
変数 = 1項 ? 2項:3項
1項には、TRUEやFALSEが決められる演算式を置く。TRUEやFALSEが決まらないといけないので、一般的に関係演算式を使う。
2項には、1項がTRUEである時に変数に入る値を置く。上の式で、1項がTRUEであると変数に2項の値が入る。
3項には、1項がFALSEである時に変数に入る値を置く。
上記した各項の内容を実際のコードで書いてみると、下記のようになる。
int num = 10;
String result = "";
result = num >= 0 ? "正数(0含み)です。":"負数です。"; // 1項(条件式)がtrueであるので、2項の値がresultに代入される。
System.out.println(result); // "正数です。" 出力
つまり、三項演算子はある条件を、2つの範囲に分けて結果を決めることができる。
3項のところに、値でなく「?」を書いて再び条件式を入れて、次に「:」を書いて結果の値をまた分けることもできる。
変数 = 1項 ? 2項 : 3項 ? 4項 : 5項
このように書くと、1項の結果がtrueであると2項で、falseになった時、3項の条件をもう1度チェックする。3項の条件式がtrueであると4項のが、falseであれば5項の値をresultに代入する。
理解をために、下記のコードを見てみよう。
num = -1;
result = num > 0 ? "正数です。":num == 0 ? "0です。":"負数です。" //1項がfalseで、3項をもう1度チェックする。3項もfalseになったので、5項の「負数です。」になる。
System.out.pringln(result); //"負数です。"が出力。
つまり、条件式を増やすと(条件式の数+1)個の結果を決めることができる。
練習&例題
下は三項演算子を使う練習問題をもらって、私が解けたコードである。
- ある整数を入力して、その数が2、もしくは3の倍数であるかを判別するコード(ただし、三項演算子と「%」演算子を使うべき)
//三項演算子と「%」演算子を活用してコードを作成。
//1) int型のデータを、キーボードで入力する。
//2) 入力したその値が2、もしくは3の倍数であるかを判別する。
public static void main(String[] args) {
//変数の宣言
Scanner sc = new Scanner(System.in);
int num = 0;
int result = 999;
//キーボードで整数を入力
System.out.print("任意の整数を入力してください。: ");
num = sc.nextInt();
//三項演算子と「%」演算子を使って演算
result = ((num % 2 == 0) || (num % 3 == 0)) ? 1 : 0;
//結果を出力
System.out.println(result);
}
- char型のデータを入力して、大文字か小文字かを判別するコード
//char型の変数を入力して、大文字であるかを判別する。
//大文字であれば、「入力完了」を出力。
//大文字でなければ、「入力エラー」を出力。
//ただし、三項演算子を使うべき。
public static void main(String[] args) {
//宣言
Scanner sc = new Scanner(System.in);
String scanStr = "";
char ch = ' ';
String s = "";
//入力
System.out.print("アルファベットの大文字の1字を入力してください。: ");
scanStr = sc.nextLine();
ch = scanStr.charAt(0);
//三項演算子を使って演算
s = ((ch >= 'A') && (ch <= 'Z')) ? "入力完了" : "入力エラー";
//出力
System.out.println(s);
//後片付け
sc.close();
}//main(end)
以上で、三項演算子についてまとめてみた。 条件に合うか合わないかをもって違う結果を出すという三項演算子の特徴は、次の制御文を学びことに役にたつと思う。また、三項演算子になれる簡単な制御文を、1行で分かりやすく作ることもできるらしい。
Discussion