[Java] 条件によって処理を分ける if文とbooleanについて

2017年3月18日(更新: 2018年2月1日)

前回は、キーボードからの入力を受け取って三角形の面積を計算するJavaのプログラムについて解説しました。そのプログラムの問題点は、マイナスの値が入力された場合、正しくない結果が計算されてしまうことでした。

今回は、この問題を解決するために条件分岐について学んでいきましょう。

if文による条件分岐の書き方

Javaで条件分岐を行う方法はいくつかあります。まず、ひとつ目は if文 を使うことです。

if文の基本的な書き方は以下のようになります。

if ( 条件 ) {
 
    //条件が満たされたとき、この部分を実行
 
} else {
 
    //条件が満たされないとき、この部分を実行
 
}

実際に、条件によって表示する文章を変えるプログラムを作ってみます。

例えば、キーボードから入力された点数(数値)によって「合格」または「不合格」を伝えるメッセージを表示するプログラムを考えます。

import java.util.Scanner;

public class Test {
 
    public static void main(String args[]) {
 
        System.out.print("得点を入力してください: ");
 
        Scanner scan = new Scanner(System.in);

        // キーボードから整数の入力を受け取る
        int score = scan.nextInt();

        // キーボードからの入力を終了する
        scan.close();
 
        // 60点未満と60点以上で処理を分ける
        if (score >= 60) {
            System.out.println("おめでとう! 合格です");
        } else {
            System.out.println("残念。不合格です");
        }
    }
}

プログラムの実行結果は以下のようになります。

60点以上の時のプログラム結果

60点未満の時のプログラム結果

入力した値によって実行結果が異なることが確認できます。

条件に当てはまれば if (条件) の直後のブロック( “{” と “}” の間)が実行され、当てはまらなければ else の後のブロックが実行されます。

条件にあてはまらない場合の処理が必要ない場合は else 以降は省略できます。

次に示すサンプルプログラムでは else を省略しているので、入力値が60未満のとき何も表示されません。

import java.util.Scanner;

public class Test {
 
    public static void main(String args[]) {
 
        System.out.println("得点を入力してください: ");
 
        Scanner scan = new Scanner(System.in);

        // キーボードから整数の入力を受け取る
        int score = scan.nextInt();

        // キーボードからの入力を終了する
        scan.close();
 
        // 60点以上ならメッセージを表示
        if (score >= 60) {
            System.out.println("おめでとう! 合格です");
        }
    }
}

if文の条件について

if文の条件は「はい」か「いいえ」で答えられるものに限られます。

上の例では scoreの値が60より大きいなら「はい」、小さいなら「いいえ」となります。

このような条件を作るときには、以下の不等号や等号を使います。

記号 意味
< 左の値が右の値より小さいなら「はい」
> 左の値が右の値より大きいなら「はい」
<= 左の値が右の値以下なら「はい」
>= 左の値が右の値以上なら「はい」
== 左の値と右の値が等しいなら「はい」
!= 左の値と右の値が違うなら「はい」

true と false

Javaでは、この「はい」のことを true、「いいえ」のことを false と表現します。

例として、常に条件を満たすif文や絶対に条件を満たさないif文を書くと次のようになります。

public class Test {
 
    public static void main(String args[]) {
 
        // 条件が必ず「はい」になるif文の例
        if (true) {
            System.out.println("ここは絶対実行されます");
        }
 
        // 条件が必ず「いいえ」になるif文の例
        if (false) {
            System.out.println("ここは絶対実行されません");
        } else {
            System.out.println("ここが実行されます");
        }
    }
}

このプログラムを Eclipse で記述したときに警告が出ます。

この警告は、false のブロックはデッドコード(絶対に実行されない意味のないコード)なので消すように注意してくれています。

実行結果と警告を以下に示します。

デットコードに対する警告とプログラムの実行結果

真偽値の型 boolean型

ここで新しい変数の型を紹介しましょう。実は、条件の truefalse を格納するための変数の型があります。

これは boolean型 と言います。boolean型は true か false の2つの状態のみをとります。

public class Test {
 
    public static void main(String args[]) {
 
        // boolean型の変数を宣言
        boolean b1 = true;
        boolean b2 = false;
 
        if (b1) {
            System.out.println("trueなので、ここは実行されます");
        }
 
        if (b2) {
            System.out.println("falseなので、ここは実行されません");
        }
    }
}

boolean型を活用したプログラムを後ほど紹介します。

三角形の面積計算プログラムの修正

では、この if文 を使って、前回の三角形の面積を求めるプログラムの問題を修正してみましょう。

問題は、マイナスの整数が入力されたときの処理でした。

マイナスの値が入力されたときはエラーメッセージを表示してプログラムを終了するように変更してみます。

import java.util.Scanner;
 
public class Test {
 
    public static void main(String args[]) {

        Scanner scan = new Scanner(System.in);
       
        System.out.print("底辺の長さを入力して下さい: ");
 
        // 底辺の長さ
        float width = scan.nextFloat();
 
        System.out.print("高さを入力して下さい: ");
       
        // 高さ
        float height = scan.nextFloat();
       
        // キーボードからの入力を終了する
        scan.close();
 
        // 底辺の長さがマイナス値かどうかチェックし、マイナスなら処理を終了させる
        if (width < 0) {
            System.out.println("底辺の長さがマイナスです。計算できません。");
 
            // メソッドを終了
            return;
        }
 
        // 高さがマイナス値かどうかチェックし、マイナスなら処理を終了させる
        if (height < 0) {
            System.out.println("高さがマイナスです。計算できません。");
 
            // メソッドを終了
            return;
        }
 
        // 面積
        float area = width * height / 2;
 
        // 答えを表示する
        System.out.println("三角形の面積は" + area + "です。");
    }
}

プログラムの実行結果です。

マイナスの値を入力した場合は処理が中断されています。

マイナスの高さを入力した時の実行結果

マイナスの底辺の長さを入力した時の実行結果

returnについて

処理を中断するために return という命令を使いました。

return が実行されると、その後に書かれているプログラムは実行されずにメソッドが終了します。

おしまい

以上が Java における if文 の基本的な使い方です。次回は3つ以上の条件分岐について紹介します。

[Java] 条件によって処理を分ける if文とbooleanについて」への1件のフィードバック

  1. ピンバック: [Java] 3つ以上の条件分岐 if文とswitch文 | JoyPlotドキュメント

コメントを残す

メールアドレスが公開されることはありません。