ifの後半ではifの文法と特徴を紹介します。if文の前半はこちら
もくじ
ifの文法
ifは条件を元に処理を分岐させる制御構文となっています。条件の部分にはtrueもしくはfalseの結果となる演算※やboolean型の変数などが記述できます。
※比較演算や論理演算など
処理はifブロックと呼ばれる{}内に記述します。
ブロックを記述しない方法もあり、その際は1行のみがifの適用範囲になります。
ifの文法 (ブロック記述) |
if(条件){
条件に一致した時の処理 ; } |
---|---|
記述例 | int count = 8;
if(count <= 10){ System.out.println(“countは10以下です”); } |
ifの文法 | if(条件) 条件に一致した時の処理 ; |
記述例 | int count = 8;
if(count <= 10) System.out.println(“countは10以下です”); |
記述例ではcountが10以下の時に処理を実行するという流れになっています。
if(count <= 10)
System.out.println(“countは10以下です”);
System.out.println(“ifの適用範囲外”);
ブロック記述でない場合は、処理は1行のみ適用範囲となる為、2行目の表示処理は条件に関係なく必ず表示されます。
if文 サンプルプログラム
以下のプログラムを「Number14.java」という名前でworkフォルダ内に保存します。
保存が完了したら、コマンドプロンプトを起動し、コンパイルおよび実行を行ってみましょう。
1 2 3 4 5 6 7 8 9 10 11 12 |
class Number14{ public static void main(String[] args){ //投入金額 int entry_amount = 100; System.out.println("投入金額は" + entry_amount + "円です。"); if(entry_amount == 100){ System.out.println("ドリンクが購入されました。"); } } } |
実行例
c:\work>javac Number14.java
C:\work>java Number14
投入金額は100円です。
ドリンクが購入されました。
※実行例はコンパイルから実行までの例を表示しています。
Number14の一部解説
Number14では、条件として「entry_amount(投入金額)が100円の時」、処理が「飲み物が購入できる」としています。
プログラム | 補足 | |
---|---|---|
条件 | entry_amount == 100 | 投入金額が100円の時 |
処理 | Sysout(“ドリンクが購入されました。”) | 飲み物を購入できる(表示) |
※System.out.println()はSysoutとして省略しています
if-elseの文法
if-elseはifの下にelse部分を追加するだけです。条件や処理の部分に変更はありません。if同様{}を付けた場合は複数の処理を記述でき、{}を付けなかった場合は1行のみが適用範囲となります。
処理はブロックである{}内に記述します。
ブロックを記述しない方法もあり、その際は1行のみがifやelseの適用範囲になります。
if-elseの文法 (ブロック記述) |
if(条件){
条件に一致した時の処理 ; }else{ 条件に一致しなかった時の処理; } |
---|---|
記述例 | int count = 8;
if(count <= 10){ System.out.println(“countは10以下です”); }else{ System.out.println(“countは10より大きい”); } |
if-elseの文法 | if(条件) 条件に一致した時の処理 ; else 条件に一致しなかった時の処理 ; |
記述例 | int count = 8;
if(count <= 10) System.out.println(“countは10以下です”); else System.out.println(“countは10より大きい”); |
記述例ではcountが10以下の時、10より大きい時に別々の処理を実行するという流れになっています。
if-else文 サンプルプログラム
「Number14.java」のプログラムをelse部分(10-13行目)を追加および編集しましょう。
また、entry_amountは500に変更してあります。
保存が完了したら、コマンドプロンプトを起動し、コンパイルおよび実行を行ってみましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
class Number14{ public static void main(String[] args){ //投入金額 int entry_amount = 500; System.out.println("投入金額は" + entry_amount + "円です。"); if(entry_amount == 100){ System.out.println("ドリンクが購入されました。"); }else{ System.out.println("ドリンクは購入できませんでした。"); System.out.println(entry_amount + "円を返却します。"); } } } |
実行例
c:\work>javac Number14.java
C:\work>java Number14
投入金額は500円です。
ドリンクは購入できませんでした。
500円を返却します。
※実行例はコンパイルから実行までの例を表示しています。
上記のプログラムでは投入金額が500円を投入しても飲み物を購入できません。そこで、次はelse ifを追加して100円より多い投入金額で購入できるように変更します。
Number14(else変更後)の一部解説
Number14の変更後は、条件として「entry_amount(投入金額)が100円の時」、条件に一致した時の処理が「飲み物が購入できる」としています。条件に一致しない時の処理が「返金処理」としてます。
プログラム | 補足 | |
---|---|---|
条件 | entry_amount == 100 | entry_amount(投入金額)が100円の時 |
条件に一致した時の処理 | Sysout(“ドリンクが購入されました。”) | 飲み物を購入できる(表示) |
条件に一致しない時の処理 | Sysout(“ドリンクは購入できませんでした。”) Sysout(entry_amount + “円を返却します。”) |
返金処理(表示) |
if-else if(-else)の文法
if-else ifはifの下にelse if部分を追加します。条件や処理の部分に変更はありません。
elseと違いelse ifは複数追加することができます。
if同様{}を付けた場合は複数の処理を記述でき、{}を付けなかった場合は1行のみが適用範囲となります。
処理はブロックである{}内に記述します。
ブロックを記述しない方法もあり、その際は1行のみがif、else if、elseの適用範囲になります。
if-else ifの文法 (ブロック記述) |
if(条件A){
条件Aに一致した時の処理 ; }else if(条件B){ 条件Bに一致した時の処理 ; } ※elseブロックは必要に応じて追加できる |
---|---|
記述例 | int count = 8;
if(count <= 10){ System.out.println(“countは10以下です”); }else if(count >= 100){ System.out.println(“countは100以上です”); } |
if-else ifの文法 | if(条件A) 条件Aに一致した時の処理 ; else if(条件B) 条件Bに一致した時の処理 ; ※elseは必要に応じて追加できる |
記述例 | int count = 8;
if(count <= 10) System.out.println(“countは10以下です”); else if(count >= 100) System.out.println(“countは100以上です”); |
記述例ではcountが10以下の時と100以上の時で別々の処理を実行するという流れになっています。
if-else if(-else)文 サンプルプログラム
「Number14.java」のプログラムをelse if部分(10-13行目)を追加及び編集してみましょう。
保存が完了したら、コマンドプロンプトを起動し、コンパイルおよび実行を行ってみましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
class Number14{ public static void main(String[] args){ //投入金額 int entry_amount = 500; System.out.println("投入金額は" + entry_amount + "円です。"); if(entry_amount == 100){ System.out.println("ドリンクが購入されました。"); }else if(entry_amount > 100){ System.out.println("ドリンクが購入されました。"); System.out.println("お釣りを" + (entry_amount - 100) + "円返金します。"); }else{ System.out.println("ドリンクは購入できませんでした。"); System.out.println(entry_amount + "円を返却します。"); } } } |
実行例
c:\work>javac Number14.java
C:\work>java Number14
投入金額は500円です。
ドリンクが購入されました。
お釣りを400円返金します。
※実行例はコンパイルから実行までの例を表示しています。
Number14(else if追加後)の一部解説
Number14の変更後は以下のようになっています。
条件Aとして「entry_amount(投入金額)が100円の時」、条件Aに一致した時の処理が「飲み物が購入できる」としています。
条件Bとして「entry_amount(投入金額)が100円より多い時」、条件Bに一致した時の処理が「飲み物が購入できる」+「お釣りの返金」としています。
条件Aにも条件Bにも一致しない時の処理が「返金処理」としてます。
プログラム | 補足 | |
---|---|---|
条件A | entry_amount == 100 | 投入金額が100円の時 |
条件B | entry_amount > 100 | 投入金額が100円より多い時 |
条件Aに一致した時の処理 | Sysout(“ドリンクが購入されました。”) | 飲み物を購入できる(表示) |
条件Aに一致した時の処理 | Sysout(“ドリンクが購入されました。”) Sysout(“お釣りを” + (entry_amount – 100) + “円返金します。”) |
飲み物を購入できる(表示) お釣りの返金(表示) |
条件ABともに一致しないときの処理 | Sysout(entry_amount + “円を返却します。”) | 返金処理(表示) |
補足:if-else ifが複数ある場合
else ifは複数追加できますが、条件は上から順序良く確認することになります。
else ifを複数追加する際には上と下の条件で矛盾がないか確認する必要があります。
例えば、以下のようなプログラムがあったとします。
if(point >= 100){ // ←①
ポイントが100以上の場合の処理
}else if(point >= 300){ // ←②
ポイントが300以上の場合の処理
}else if(point >= 500){ // ←③
ポイントが500以上の場合の処理
}
if-else ifでは上の条件に当てはまらない場合に下の条件に移行します。
上記のプログラムでは①の条件が100以上となっており300以上、さらに500以上も含まれます。②と③のelse ifにプログラムが移行されることはありません。
文法上はエラーにはなりませんが、複数の条件を作成する際には条件同士で矛盾が生じないように気を付けましょう。
if文 復習問題
- ifは○処理を行うことができます。○は条件によって行います。○に入る語句を選んでください。
- 解答群
- ループ
- 順次
- 分岐
- 反復
- ifの条件部分に記述できない処理を選んでください。
- 解答群
- true
- false
- 3 + 5
- 3 == 5
- ifの条件部分に記述できない処理を選んでください。
- 解答群
- 3 + 5 == 8
- 3 + 5 >= 10
- 4 + 8 == 5 + 7
- 4 + 8 = 5 + 7
- 以下のif文ではどのような表示が行われるか選んでください。
1234567int count = 100;if(count > 100){count++;System.out.println(count);}else{System.out.println(count);} - 解答群
- コンパイルエラー
- 100
- 101
- count
- 以下のif文ではどのような表示が行われるか選んでください。
123int count = 100;if(count > 100) System.out.println(count);else System.out.println(count); - 解答群
- コンパイルエラー
- 100
- 101
- count
- 以下のif文ではどのような表示が行われるか選んでください。
123int count = 100;if(count > 100) count++; System.out.println(count);else System.out.println(count); - 解答群
- コンパイルエラー
- 100
- 101
- count
- 以下のif文ではどのような表示が行われるか選んでください。
1234int count = 100;if(count > 100) System.out.println("a");else if(count == 100) System.out.println("b");else System.out.println("c"); - 解答群
- コンパイルエラー
- a
- b
- c
- 以下のif文ではどのような表示が行われるか選んでください。
12345int count = 100;if(count >= 10) System.out.println("a");else if(count >= 50) System.out.println("b");else if(count >= 100) System.out.println("c");else System.out.println("d"); - 解答群
- コンパイルエラー
- a
- b
- c
- お疲れ様でした。
まとめ
- ifの条件部分にはboolean型の演算結果や変数を記述する
- 「if」は条件に合致した場合のみ処理を行う
- 「if-else」では、条件に合致した場合と合致しなかった場合の処理を分けることができる
- 「if-else if」では、ifとelse ifで別々の条件を指定してそれぞれの処理を分けることができる
- else ifは複数記述できるが、その際はそれぞれの条件で矛盾が生じないように注意
- else ifの後にelseを任意で追加できる