第3回Java勉強会 †
概要 †
(Java言語プログラミングレッスン(上)のP.84以降の内容です。)
条件分岐とは(制御文) †
条件分岐の説明
比較演算子 †
条件式、比較演算子
if文 †
if、if~else if~elseの使用方法
switch文 †
switchの使用方法
三項演算子 †
詳細 †
条件分岐とは(制御文) †
プログラムを組む上でさまざまな機能を盛り込んでいくことになります。そこで無くてはならないのがこの条件分岐というものです。
これはプログラムの流れを制御するといった意味で制御文、制御ステートメントと言います。
自動販売機を例に処理を考えてみます。
利用者120円の飲み物を買うためにお金を入れて商品のボタンを押すところを想定します。
- 利用者は120円入れました
- 投入された金額が商品の金額と同じです。
- 商品を出します。
- 終了します。
- 利用者は200円入れました
- 投入された金額が商品の金額より多いです。
- 商品を出します。
- お釣りを出します。
- 終了します。
「AとBが同じならならば処理1を行う」、「AとBが同じでなければ処理2を行う」、「AがBよりも大きければ処理3を行う」などといった処理の分岐を行うために使用します。
その時の判定材料として変数の値などによって処理を分岐させることができます。
比較演算子 †
これから説明する制御文では、比較演算子を使用して条件式の評価を行いプログラムの制御を行います。
条件式とは以下のようなものことをいいます。
その式の結果は、true(真)もしくはfalse(偽)という結果を返します。
- 値1と値2を比較する場合の条件式
値1 比較演算子 値2
| 演算子 | 意味 |
| == | 等しい |
| != | 異なる |
| < | 小さい |
| > | 大きい |
| <= | より小さいか等しい |
| >= | より大きいか等しい |
| ! | 条件の否定 |
| instanceof | クラスの型のチェック*1 |
public class Compare {
public static void main(String[] args) {
int a = 10;
int b = 10;
System.out.println(a == b);
int c = 50;
int d = 100;
System.out.println(c > d);
}
}
if文 †
- ()の中の条件式の結果がtrueなら{}の中の処理を行います。
- サンプルプログラム - そのときの気温に対して暑いかどうかのメッセージを出力します。
temperatureの値を変更してプログラムを実行し結果を確認してみましょう。
public class IfSample1 {
@param
public static void main(String[] args) {
int temperature = 20;
if (temperature >= 25) {
System.out.println("暑いです。");
} else {
System.out.println("暑くないです。");
}
}
}
- else if
- 複数の条件を判定したい場合にはelse ifを使用します。
if (条件1) {
条件1を充たしているときの処理
} else if (条件2) {
条件2を充たしているときの処理
} else {
条件1、条件2にあてはまあらなかった場合の処理
}
- サンプルプログラム - 複数の条件で判定します。
public class ElseIf {
@param
public static void main(String[] args) {
int temperature = 10;
if (temperature > 30) {
System.out.println("とても暑いですね");
} else if (temperature > 20) {
System.out.println("暑いですね");
} else if (temperature > 15) {
System.out.println("ちょうど良いですね。");
} else {
System.out.println("寒いですね。");
}
}
}
- if文の中にif文を書くこともできます。
public class IfNest {
@param
public static void main(String[] args) {
int temperature = 15;
if (temperature >= 30) {
System.out.println("とても暑いですね");
}
else if (temperature >= 20) {
if (temperature >= 25) {
System.out.println("暑いですね");
}
else {
System.out.println("普通ですね");
}
}
else {
System.out.println("暑くありません");
}
}
}
- ||と&&
1つのif文に複数の条件を書くこともできます。
複数条件を書くときに使うのが、||と&&です。
||は「AまたはB」でAの条件かB条件がtrue(真)ならばこの2つの条件の結果はtrue(真)となります。
&&は「AかつB」Aの条件とBの条件どちらもtrue(真)の場合、2つの条件は結果はtrue(真)となります。
- サンプルプログラム - 以下のように値の範囲を判定したいのであれば&&を使用して「値が数値1~数値2までの範囲内」かを調べることもできます。
int temperature = 9;
if (temperature >= 10 && temperature <= 20) {
System.out.println("丁度良い温度ですね");
}
- =と==
慣れるまでは気をつけてください。
- =は代入、==は比較です。間違いやすいので注意しましょう。*2
int i = 1;
System.out.println(i == 2);
System.out.println(i = 2);
- ()括弧をつけると条件判定の優先順位が変わります。
数学と同じですね。内側の()から処理がされていきます
int temperature = 9;
int humidity = 49;
if ((temperature >= 10 && temperature <= 20) && humidity < 49) {
System.out.println("丁度良い環境ですね");
}
- 文字列の比較
文字列(String)の比較はequalsを使います。
2つの文字列が一致していることを判定するときは
String stringA = "AAA";
if ("AAA".equals(stringA)) {
System.out.println("stringAはAAAです");
}
2つの文字列が一致していないことを判定するときは
String stringB = "BBB";
if (!"AAA".equals(stringB)) {
System.out.println("stringBはAAAではありません");
}
のように記述します。
swtich文 †
複数の条件分岐を記述できるswitch文という構文があります。
- 構文
switch (判定対象) {
case 条件:
break;
default:
break;
}
※caseは複数回記述することができます。
defaultは省略可能です。(が、書くようにした方が良いでしょう)
switch文は使用する機会があまりないかもしれません。
理由は以下のようなものがあります。
- 一致しているという判定しかできない
- switchに指定できる値は基本型(プリミティブ型)のchar、byte、short、intでないといけない(Stringは使用できません)
- breakを書き忘れることによりブロック外の処理が実行されてしまう。(breakはcase内の処理を終了する命令です)
- breakを書き忘れた悪い例
int temperature = 10;
switch (temperature) {
case 20:
System.out.println("20度です");
break;
case 10:
System.out.println("10度です");
default:
System.out.println("その他です");
break;
}
- if文とswitch文の比較
以下のように、if文でもswitch文と同じ処理を記述できます。
基本的には使用できる型を気にしないで済むif文を使用すればいいでしょう。
int temperature = 10;
switch (temperature) {
case 20:
System.out.println("20度です");
break;
case 10:
System.out.println("10度です");
break;
default:
System.out.println("その他です");
break;
}
上記のswitch文をif文で書くと、以下のようになります。
int temperature = 10;
if (temperature == 20) {
System.out.println("20度です");
}
else if (temperature == 10) {
System.out.println("10度です");
}
else {
System.out.println("その他です");
}
三項演算子 †
if~elseを1行にまとめて書くことのできる構文があります。(使う機会は少ないかもしれません)
(条件式) ? 条件を満たした場合の処理: 条件を満たさなかった場合の処理
int i = 1;
String s = i > 0 ? "条件を満たしました" : "条件を満たしませんでした";
System.out.println( s );
練習問題 †
- BMIの計算をして結果を表示するプログラムを作ってみましょう。
- BMIは以下の式で求めることができます。
BMI=体重(kg)/(身長(m)x身長(m))
| 18.5未満 | 痩せている |
| 18.5以上25未満 | 普通 |
| 25以上30未満 | 肥満1 |
| 30以上35未満 | 肥満2 |
| 35以上40未満 | 肥満3 |
| 40以上 | 肥満4 |
- 自動販売機のような動作をするプログラムを作ってみましょう。
(金額を入力して、¥120以上だったら「缶ジュースを買いました。おつりは¥xxxです」と表示する)
Java勉強会カリキュラムに戻る