if文
プログラムの処理を条件により分岐させることができます。処理を分岐させるのにif文を使います。この節では、if文の次の種類の使い方を学習します。
■ if文
「もし、今日が平日ならば仕事に行く」というように、日常でも「もし、~であれば、~する」という場面が多くあります。if文は、指定した条件式がtrueと判断されたときにのみ処理が実行されます。
if文の書式 |
---|
if(条件式){ 処理; } |
例:
if(num == 1){
System.out.println(“1です。”):
}
○ ファイル
次のようにファイルを作成してください。
ファイル名 | IfTest1.java |
---|
○ プログラム
次のようにプログラムを入力してください。
IfTest1.java
- import java.io.*;
- class IfTest1{
- public static void main(String[] args) throws Exception{
- //変数の宣言をする
- String str;
- //データを入力する準備をする
- BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
- //データを入力する
- System.out.print("「平日」か「休日」を入力してください:");
- str = br.readLine();
- //平日の場合、メッセージを表示する
- if(str.equals("平日")){
- System.out.println("今日は仕事があります。");
- }
- }
- }
○ コンパイルと実行
C:¥work>javac IfTest1.java
C:¥work>java IfTest1
「平日」か「休日」を入力してください:平日
今日は仕事があります。
C:¥work>java IfTest1
「平日」か「休日」を入力してください:休日
C:¥work>
○ フローチャート
○ 解説
今回のサンプルから、キーボード入力が登場します。キーボードから入力をするために、いくつかのプログラムを書く必要がありますが、詳しくはオブジェクト指向編で説明します。キーボード入力で関係するプログラムは、4、9、13行目です。4行目では、「throws Exception」が追加されています。そして9行目で「BufferedReader br = new BufferedReader(new InputStreamReader(System.in));」が書かれていますが、これがキーボード入力をするための記述です。13行目では、「br.readLine()」がありますが、これが実行されるとキーボード入力待ち状態になり、入力した文字列が変数strに代入されます。
16行目では、変数strと「平日」という文字列を比較しています。等しいかどうかを比較するときJavaでは、「=」や「==」で比較するのではなく、「変数名.equals([比較する文字列])」と書き、等しい場合は「true」を、等しくない場合は「false」を返します。今回は、「平日」を入力すると「今日は仕事があります。」と表示し、そのほかを入力した場合は何もしません。
■ if else文
次に、「もし、今日が平日ならば仕事に行く、その他の場合は、遊びに行く」というような、「もし、~であれば、~をし、その他の場合は、~する」という条件を見てみましょう。if else文は条件式がtrueと判断されたときと、falseと判断されたときにそれぞれの処理が実行されます。
if文の書式 |
---|
if(条件式){ 処理1; }else{ 処理2; } |
例:
if(num == 1){
System.out.println(“1です。”):
}else{
System.out.println(“1ではありません。”):
}
○ ファイル
「IfTest1.java」をコピーして、次のようにファイル名を変更してください。
ファイル名 | IfTest2.java |
---|
○ プログラム
次のようにプログラムを入力してください。
IfTest2.java
- import java.io.*;
- class IfTest2{
- public static void main(String[] args) throws Exception{
- //変数の宣言をする
- String str;
- //データを入力する準備をする
- BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
- //データを入力する
- System.out.print("「平日」か「休日」を入力してください:");
- str = br.readLine();
- //入力データによって処理を分岐する
- if(str.equals("平日")){
- System.out.println("今日は仕事があります。");
- }else{
- System.out.println("今日は遊びに行きましょう。");
- }
- }
- }
○ コンパイルと実行
C:¥work>javac IfTest2.java
C:¥work>java IfTest2
「平日」か「休日」を入力してください:平日
今日は仕事があります。
C:¥work>java IfTest2
「平日」か「休日」を入力してください:休日
今日は遊びに行きましょう。
C:¥work>
○ フローチャート
○ 解説
15行目では、入力したデータを比較しています。条件として変数strに格納されているデータが「平日」と等しければ、16行目の命令文で画面に表示されます。17行目では、else文が記述されているので、条件が満たされない場合は18行目の命令文でメッセージが表示されます。
入力内容によって「今日は仕事があります。」か「今日は遊びに行きましょう。」が表示されます。今回のサンプルでは「平日」と入力されれば「今日は仕事があります。」と表示され、それ以外を入力すると「今日は遊びに行きましょう。」と表示されます。
■ if elseif else文
次に、「もし、今日が平日ならば仕事に行く、その他もし、休日ならば遊びに行く、その他の場合は、なにもしない」というような、「もし、~であれば、~をし、その他もし~であれば、~をし、その他の場合は、~する」という条件を見てみましょう。 if elseif else文は条件式がtrueと判断されたときは処理を、falseと判断されたときはさらに次の条件式を判断します。
if文の書式 |
---|
if(条件式1){ 処理1; }else if(条件式2){ 処理2; }else{ 処理3; } |
例:
if(num == 1){
System.out.println(“1です。”):
}else if(str.squals(“1”)){
System.out.println(“数字の1です。”):
}else{
System.out.println(“1ではありません。”):
}
○ ファイル
「IfTest2.java」をコピーして、次のようにファイル名を変更してください。
ファイル名 | IfTest3.java |
---|
○ プログラム
次のようにプログラムを入力してください。
IfTest3.java
- import java.io.*;
- class IfTest3{
- public static void main(String[] args) throws Exception{
- //変数の宣言をする
- String str;
- //データを入力する準備をする
- BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
- //データを入力する
- System.out.print("「平日」か「休日」を入力してください:");
- str = br.readLine();
- //入力データによって処理を分岐する
- if(str.equals("平日")){
- System.out.println("今日は仕事があります。");
- }else if(str.equals("休日")){
- System.out.println("今日は遊びに行きましょう。");
- }else{
- System.out.println("今日は家でおとなしくしていましょう。");
- }
- }
- }
○ コンパイルと実行
C:¥work>javac IfTest3.java
C:¥work>java IfTest3
「平日」か「休日」を入力してください:平日
今日は仕事があります。
C:¥work>java IfTest3
「平日」か「休日」を入力してください:休日
今日は遊びに行きましょう。
C:¥work>java IfTest3
「平日」か「休日」を入力してください:その他
今日は家でおとなしくしていましょう。
C:¥work>
○ フローチャート
○ 解説
16行目では、入力したデータを比較しています。条件として変数strに格納されているデータが「平日」と等しければ、17行目の命令文で画面に表示されます。18行目では、「else if」文が記述されているので、16行目の比較で等しくなければ、さらに入力データを比較します。条件として変数strに格納されているデータが「休日」と等しければ、19行目の命令文で画面に表示されます。20行目では、「else」文が記述されているので、16、18行目の条件が満たされない場合は21行目の命令文でメッセージが表示されます。
「else if」文は複数指定することができます。また、「else」文は省略することもできます。