トップ 一覧 検索 ヘルプ RSS ログイン

if-else文の変更点

  • 追加された行はこのように表示されます。
  • 削除された行はこのように表示されます。
!!! 第一章 Java プログラミングの基礎

!! 1-3. Javaプログラムの基礎

! if-else 文

if-else は条件分岐処理の最も基本的な文です。文法は次のようになっています。

 if (expression)
     statement1
 else
     statement2

まず最初に「expression」が評価されます。「expression」は boolean または Booleanクラスである必要があります。要するに評価した結果が真か偽で返される必要があるということです。「expression」が真の場合には文「statement1」が実行されます。偽の場合には文「statement2」が実行されます。「else」とそれに続く「statement2」は省略することも可能です。

例を示しましょう。

''Sample11.java''
 1.public class Sample11{
 2.    public static void main( String[] args){
 3.        int a = 10;
 4.        int b = 5;
 5.        
 6.        System.out.println( "a = " + a + ", b = " + b);
 7.        
 8.        if( b > a)
 9.            System.out.println( "b > a");
 10.        else
 11.            System.out.println( "b <= a");
 12.    }
 13.}
{{pre num
public class Sample11{
    public static void main( String[] args){
        int a = 10;
        int b = 5;
        
        System.out.println( "a = " + a + ", b = " + b);
        
        if( b > a)
            System.out.println( "b > a");
        else
            System.out.println( "b <= a");
    }
}
}}

このプログラムでは expression が b > a で、statement1 が System.out.println( "b > a") 、statement2 が System.out.println( "b <= a") です。

いま、 a = 10 、 b = 5 としているので「expression」の評価は偽となります。つまり「statement2」が実行されるはずです。実際の実行結果を見てみましょう。

 C:\jprogram>java Sample11
 a = 10, b = 5
 b <= a

確かに「statement2」で命令している b <= a が出力されていますね。

さて、さきほど文が記述できるところにはブロックを用いることができると書きました。ということは 「statement1」や「statement2」はブロックでも構わないわけです。実際にやってみましょう。

''Sample12.java''
 1.public class Sample12{
 2.    public static void main( String[] args){
 3.        int a = 10;
 4.        int b = 5;
 5.        
 6.        System.out.println( "a = " + a + ", b = " + b);
 7.        
 8.        if( b > a){
 9.            System.out.println( "expression1 executed.");
 10.            System.out.println( "b > a");
 11.        }
 12.        else{
 13.            System.out.println( "expression2 executed.");
 14.            System.out.println( "b <= a");
 15.        }
 16.    }
 17.}
{{pre num
public class Sample12{
    public static void main( String[] args){
        int a = 10;
        int b = 5;
        
        System.out.println( "a = " + a + ", b = " + b);
        
        if( b > a){
            System.out.println( "expression1 executed.");
            System.out.println( "b > a");
        }
        else{
            System.out.println( "expression2 executed.");
            System.out.println( "b <= a");
        }
    }
}
}}

文を書くべきところにブロック { 文1; 文2; ... } を記述しました。実行結果は次のようになります。

 C:\jprogram>java Sample12
 a = 10, b = 5
 expression2 executed.
 b <= a

確かに「statement2」に相当するブロックが実行されました。

さて、もうひとつ注目したいのは if-else それ自体も文であるということです。ということは「statement 」に if-else を持ってきても良いということです。次のように if-else の連鎖をさせることも可能です。

 if ( expression1 )
     statement1
 else if ( expression2 )
     statement2
 else if (expression3 )
     statement3
 ...
 else if ( expressionN-1 )
     statementN-1
 else
     statementN

分岐先が複数ある場合に良く使われるので、こんな書き方もできるんだということを覚えておいてください。