山元進 条件演算子 if ( … ) { … } else { … } switch ( … ) { case … } ( … ) には条件を記述する式が入る 条件 とは 真/偽 が判定できるようなもの 条件の記述 日常会話では 「英語の試験は良い成績だった」と いうような、あいまいな条件がありうる コンピュータはあいまいな判定条件をどうにか処 理できるほど気が利かないので、確定的な条件を 与える。 英語の点数を表す変数を a として a >= 80 a < 80 コンパイル時に判定できるような条件 3 > 1 いつでも真な条件式 3 < 1 いつでも偽な条件式 他にも真/偽を判定するような演算子 (関係 演算子) が色々ある cf. 表5-1 5>3 3>5 a == 6 a の値が 6 のときは true a の値が 6 ではない時は false a != 6 評価すると true (真) 評価すると false(偽) 変数 a の値によって評価変わる 上の例と反対の関係 a の値が 6 のときは false a の値が 6 ではない時は true == と = (代入演算子) を混同するな まず、もっとも簡単な構文から if ( 条件 ) { 条件成立時の処理 … } 注意: 条件成立時の処理が 1 文のときは {} で 括る必要がない。しかし、ついていても構わない ので、いつでも {} をつけておいた方が良い import java.io.*; class Sample1 { public static void main(String[] args) throws IOException { System.out.println("整数を入力してください。"); BufferedReader br = new BufferedReader( new InputStreamReader(System.in)); String str = br.readLine(); int res = Integer.parseInt(str); if (res == 1) {// 必ず {} でくくることを推奨 System.out.println("1が入力されました。"); } // 1 が入力されたとき上の行が実行される System.out.println("処理を終了します。"); } } import java.io.*; // 条件成立時に、複数の処理を行う class Sample2 { public static void main(String[] args) throws IOException { System.out.println("整数を入力してください。"); BufferedReader br = new BufferedReader( new InputStreamReader(System.in)); String str = br.readLine(); int res = Integer.parseInt(str); if (res == 1) {// 入力が 1 のとき、以下の複数の処理をする System.out.println("1が入力されました。"); System.out.println("1が選択されました。"); } System.out.println("処理を終了します。"); } } import java.io.*; // 条件成立時に、複数の処理を行う class Sample2 { public static void main(String[] args) throws IOException { System.out.println("整数を入力してください。"); BufferedReader br = new BufferedReader( new InputStreamReader(System.in)); String str = br.readLine(); int res = Integer.parseInt(str); if (res == 1) // {} を外しても文法上は正しい。 System.out.println("1が入力されました。"); System.out.println("1が選択されました。"); // 入力が 1 でなくても"1が選択されました。"と出力される → バグ System.out.println("処理を終了します。"); } } // バグとは、プログラムの誤りのこと。 if(res == 1) System.out.println("1が入力されました。"); System.out.println("1が選択されました。"); 字下げ(インデンテーション)が正しくないので、 プログラムのバグが見つけにくい if(res == 1) System.out.println("1が入力されました。"); System.out.println("1が選択されました。"); 条件成立時に実行される文だけ字下げすべき import java.io.*; //条件不成立のときの処理を指定する class Sample3 { public static void main(String[] args) throws IOException { System.out.println("整数を入力してください。"); BufferedReader br = new BufferedReader( new InputStreamReader(System.in)); String str = br.readLine(); int res = Integer.parseInt(str); if (res == 1) { System.out.println("1が入力されました。"); } else { System.out.println("1以外が入力されました。 "); } } } import java.io.*; // 条件の判断を複数行う class Sample4 { public static void main(String[] args) throws IOException { System.out.println("整数を入力してください。"); BufferedReader br = new BufferedReader( new InputStreamReader(System.in)); String str = br.readLine(); int res = Integer.parseInt(str); if (res == 1) { System.out.println("1が入力されました。"); } else if (res == 2) { System.out.println("2が入力されました。 "); } else { System.out.println("1か2を入力してください。"); } } } import java.io.*; // 条件の判断を複数行う switch 文 class Sample5 { public static void main(String[] args) throws IOException { System.out.println("整数を入力してください。"); BufferedReader br = new BufferedReader( new InputStreamReader(System.in)); String str = br.readLine(); int res = Integer.parseInt(str); switch (res) { case 1: System.out.println("1が入力されました。"); break; // この break; がないと、次の処理が継続して行われる case 2: System.out.println("2が入力されました。 "); break; // break; は switch 文を抜ける、という意味 default: // 今までの case に当てはまらない場合 System.out.println("1か2を入力してください。"); break; // この break は必要ない。 入れると style が統一されて良い。 } } } import java.io.*; // 入力文字によって場合分けする class Sample6 { public static void main(String[] args) throws IOException { System.out.println("整数を入力してください。"); BufferedReader br = new BufferedReader( new InputStreamReader(System.in)); String str = br.readLine(); char res = str.charAt(0); // 先頭の char を取り出すメソッド switch (res) { // () 内の式の値として String 型は許されない。 case 'a': // switch ( … ) の()内の値に対応して char 型のリテラル System.out.println("aが入力されました。"); break; case 'b': System.out.println("bが入力されました。 "); break; default: System.out.println("aかbを入力してください。"); break; // 最後なので、この break はなくても同じ動作をする。 } } } A && B A || B 数学でいうところの A または B に対応する A か B のどちらかが true のとき true どちらも false の場合 false !A 数学でいうところの A かつ B に対応する A, B がともに true のとき true それ以外の場合 false 数学でいうところの A の否定に対応する。単項演算子 A が false のとき true A が true のとき false 論理演算子により複雑な条件を表現可能 時間があり、かつ、金があれば … import java.io.*; class Sample7 { public static void main(String[] args) throws IOException { System.out.println("あなたは男性ですか?"); System.out.println("YまたはNを入力してください。"); BufferedReader br = new BufferedReader( new InputStreamReader(System.in)); String str = br.readLine(); char res = str.charAt(0); if(res == 'Y' || res == 'y') { System.out.println("あなたは男性ですね。"); } else if(res == 'N' || res == 'n') { System.out.println("あなたは女性ですね。"); } else { System.out.println("YまたはNを入力してください。"); } } } 3項演算子(オペランドが3つ) A?B:C 条件式 A が true なら B, false なら C が値となる 例 (res == 1) ? 'A' : 'B' res の値が 1 なら char 型の 'A' が値となる。それ以外の場合 'B' が値。 import java.io.*; class Sample9 { public static void main(String[] args) throws IOException { System.out.println("何番目のコースにしますか?"); System.out.println("整数を入力してください。"); BufferedReader br = new BufferedReader( new InputStreamReader(System.in)); String str = br.readLine(); int res = Integer.parseInt(str); char ans = (res==1) ? 'A' : 'B' ; System.out.println(ans + "コースを選択しました。"); } } char ans = (res==1) ? 'A' : 'B' ; の部分は char ans; if(res==1){ ans = 'A'; } else { ans = 'B'; } とおなじこと。 条件演算子だと、6 行が 1 行で書けて便利。 (テキストの Sample8.java だと、 {} を省いてあるの で 5 行になっている。) 関係演算子を使って条件を作成できる if文を使って条件に応じた処理を行うことができる if文のバリエーションを使って,いろいろな条件に応 じた処理を行うことができる switch文を使って式の値に応じた処理を行うことが できる 論理演算子を使って複雑な条件を作成できる 条件演算子?:を使って条件に応じた処理を簡単に 記述できる 1. 整数を入力し、それが10未満であれば「入力された数は 10未満の整数です。」と出力するプログラムを作成せよ。 2. 整数を入力し、それが10未満であれば「入力された数は 10未満の整数です。」と、10以上であれば「入力された数 は10以上の整数です。」と出力するプログラムを作成せよ。 3. 整数を入力し、それが0~9の範囲であれば「入力された 数は1ケタの整数です。」と、10~99の範囲であれば「入 力された数は2ケタの整数です。」と、100以上であれば 「入力された数は3ケタ以上の整数です。」と出力するプロ グラムを、if 文とelse文を組み合わせて作成せよ。ただし、 入力された整数が負の場合は、それ以上なにも出力せず に終了することとする。 4. 5. 整数を入力し、それが0~9の範囲であれば「入力された 数は0以上9以下の整数です。」と、10~19の範囲であれ ば「入力された数は10以上19以下の整数です。」と、20 以上であれば「入力された数は20以上の整数です。」と 出力するプログラムをswitch文を用いて作成せよ。3.同 様、入力された整数が負ならば、それ以上なにも出力し ないで終了することとする。 → 提出するのはReport4.javaのみ a=13の時,次の条件がtrueであるかfalseであるか答えよ。 (TAのチェックを受けること) 1. 2. 3. a>10 && a%2==1 a<10 || a%2==0 !(a==13)
© Copyright 2024 ExpyDoc