Java制御文

7784 ワード

一つのプログラムを定義するには、より丈夫にするためには、様々な状況に対応し、実際の状況に基づいて直接結果を判定する必要があるので、プログラムに対しても状況に応じて異なる順序と文を実行すべきであり、制御文は流れの行方と順序を制御することができる.
  • シーケンス構造
  • 循環構造
  • 選択構造
  • ちくじこうぞう
    シーケンス構造は、上から順に実行する.
    //           
        
        
        
    

    じゅんかんこうぞう
    シーケンス構造のプログラム文は一度しか実行できません.同じ操作を複数回実行する場合は、ループ構造を使用する必要があります.プログラミング言語には一般的に3つの主要なループ構造があります.
  • whileサイクル
  • do...whileサイクル
  • forサイクル
  • whileサイクル
    whileは最も基本的なサイクルであり、その構造は:
    while(       ) {
        //     
    }
    

    ブール式がtrueである限り、ループはずっと実行されます.例:
    int x = 10;
    while( x < 15 ) {
         System.out.println("value of x : " + x );
          x++;
    }
    

    以上のインスタンスのコンパイル実行結果は次のとおりです.
    value of x : 10
    value of x : 11
    value of x : 12
    value of x : 13
    value of x : 14
    

    do...whileサイクル
    while文では、条件を満たさないとループできません.しかし、条件を満たさなくても、少なくとも1回実行する必要がある場合があります.do...whileサイクルはwhileサイクルと似ていますが、do...whileサイクルは少なくとも1回実行されます.
    do {
            //    
    }while(     );
    

    注:ブール式はループの後にあるので、文ブロックはブール式を監視する前に実行されました.ブール式の値がtrueの場合、文ブロックはブール式の値がfalseになるまで実行されます.例:
    int x = 10;
     
    do{
       System.out.println("value of x : " + x );
       x++;
    }while( x < 15 );
    

    以上のインスタンスのコンパイル実行結果は次のとおりです.
    value of x : 10
    value of x : 11
    value of x : 12
    value of x : 13
    value of x : 14
    

    forサイクル
    forループ実行回数は実行前に決定される.構文の形式は次のとおりです.
    for(   ;       ;   ) {
            //     
    }
    

    forループについては以下の点で説明します.
  • は、最初に初期化ステップを実行する.1つのタイプを宣言できますが、1つ以上のループ制御変数を初期化したり、空の文を指定したりできます.
  • その後、ブール式の値が検出される.trueの場合、ループは実行されます.falseの場合、ループが終了し、ループの後の文の実行が開始されます.
  • ループを1回実行した後、ループ制御変数を更新する.
  • は、ブール式を再監視する.上記の手順を繰り返します.

  • 例:
    for(int x = 10; x < 15; x = x+1) {
       System.out.println("value of x : " + x );
    }
    

    以上のインスタンスのコンパイル実行結果は次のとおりです.
    value of x : 10
    value of x : 11
    value of x : 12
    value of x : 13
    value of x : 14
    

    Java強化forループ
    Java 5は,主に配列に用いられる増強型forループを導入した.Java強化forループ構文フォーマットは次のとおりです.
    for(     :    ) {
            //    
    }
    

    宣言文:新しいローカル変数を宣言します.この変数のタイプは配列要素のタイプと一致する必要があります.その役割ドメインは、ループ文ブロックに決定され、その値はこのときの配列要素の値と等しい.式:式は、アクセスする配列名、または値を配列に戻す方法です.例:
    public class Test {
       public static void main(String args[]){
          int [] numbers = {10, 20, 30, 40, 50};
     
          for(int x : numbers ){
             System.out.print( x );
             System.out.print(",");
          }
          System.out.print("
    "); String [] names ={"James", "Larry", "Tom", "Lacy"}; for( String name : names ) { System.out.print( name ); System.out.print(","); } } }

    以上のインスタンスのコンパイル実行結果は次のとおりです.
    10,20,30,40,50,
    James,Larry,Tom,Lacy,
    

    せんたくこうぞう
    順序構造は順序でしか実行できず,判断や選択ができないため,条件文が必要である.Javaには2つの条件文があります.
  • if文
  • switch文
  • if文
    1つのif文には、ブール式と1つ以上の文が含まれます.
    構文
    if文の使い方は次のとおりです.
    if (     ) {
            //         true      
    }
    

    ブール式の値がtrueの場合、if文のコードブロックが実行され、そうでない場合、if文ブロックの後ろのコードが実行されます.
    public class Test {
     
       public static void main(String args[]){
          int x = 10;
          if( x < 20 ){
             System.out.print("   if   ");
          }
       }
    }
    

    以上のコードコンパイルの実行結果は以下の通りです.
       if   
    

    テスト問題
  • 18歳以上の学生だけがゲームをすることができます.今、プログラムを作って、学生がゲームをすることができるかどうかを判断します.
    public class Demo {
                //           
        Scanner sc = new Scanner(System.in);
        //          
        int age = sc.nextInt();
        if(age > 18) {
            System.out.println("      :" + age + ",  18 ,     .");
        }
    }
    
  • if...else文
    if文の後にelse文を付けることができ、if文のブール式の値がfalseの場合、else文ブロックが実行されます.
    構文
    if...elseの使い方は以下の通りです.
    if(     ){
       //          true
    }else{
       //          false
    }
    

    例:
    public class Test {
     
       public static void main(String args[]){
          int x = 30;
     
          if( x < 20 ){
             System.out.print("   if   ");
          }else{
             System.out.print("   else   ");
          }
       }
    }
    

    以上のコードコンパイルの実行結果は以下の通りです.
       else   
    

    if...else if...else文
    if文の後ろにはelse if...else文があり、この文は多くの可能性を検出することができます.if,else if,else文を使用する場合は、次の点に注意してください.
  • if文には最大1つのelse文があり、else文はすべてのelse if文の後にあります.
  • if文には、else文の前にいくつかのelse if文があります.
  • else if文の1つがtrueとして検出されると、他のelse if文およびelse文は実行をスキップします.
  • elseはあってもなくてもいいですが、できるだけelseを加えて、上のすべてのelse if文が実行された後、フィードバックメカニズムが教えてください.
  • 構文
    if...else構文フォーマットは次のとおりです.
    if(      1){
       //        1   true    
    }else if(      2){
       //        2   true    
    }else if(      3){
       //        3   true    
    }else {
       //            true    
    }
    

    例:
    public class Test {
       public static void main(String args[]){
          int x = 30;
     
          if( x == 10 ){
             System.out.print("Value of X is 10");
          }else if( x == 20 ){
             System.out.print("Value of X is 20");
          }else if( x == 30 ){
             System.out.print("Value of X is 30");
          }else{
             System.out.print("   else   ");
          }
       }
    }
    

    以上のコードコンパイルの実行結果は以下の通りです.
    Value of X is 30
    

    ネストされたif...else文
    ネストされたif...else文を使用するのは合法です.すなわち、ifまたはelse if文を別のifまたはelse if文で使用できます.
    構文
    ネストされたif...else構文フォーマットは次のとおりです.
    if(      1){
       ////        1   true    
       if(      2){
          ////        2   true    
       }
    }
    

    if文のようにelse if...elseをネストすることができます.例:
    public class Test {
     
       public static void main(String args[]){
          int x = 30;
          int y = 10;
     
          if( x == 30 ){
             if( y == 10 ){
                 System.out.print("X = 30 and Y = 10");
              }
           }
        }
    }
    

    以上のコードコンパイルの実行結果は以下の通りです.
    X = 30 and Y = 10
    

    switch文
    switch文は、変数が一連の値のいずれかの値と等しいかどうかを判断し、各値をブランチと呼ぶ.
    構文
    switch構文フォーマットは次のとおりです.
    switch(expression){
        case value :
           //  
           break; //  
        case value :
           //  
           break; //  
        //         case  
        default : //  
           //  
    }
    

    switch文には次のルールがあります.
  • switch文の変数タイプは、byte、short、int、charであってもよい.Java SE 7から、switchは文字列タイプをサポートし、caseラベルは文字列定数または字面量である必要があります.
  • switch文は、複数のcase文を有することができる.各caseの後ろに比較する値とコロンがあります.
  • case文の値のデータ型は、変数のデータ型と同じで、定数または字面定数のみでなければなりません.
  • 変数の値がcase文の値と等しい場合、case文の後の文はbreak文が現れるまでswitch文から飛び出しません.
  • break文に遭遇すると、switch文は終了する.プログラムはswitch文の後ろの文にジャンプして実行します.case文にはbreak文を含める必要はありません.break文が表示されない場合、break文が表示されるまで、プログラムは次のcase文を実行し続けます.
  • switch文は、switch文の最後のブランチである必要があるdefaultブランチを含むことができる.defaultはcase文の値と変数値が等しい場合に実行されます.defaultブランチにはbreak文は必要ありません.

  • 例:
    public class Test {
       public static void main(String args[]){
          //char grade = args[0].charAt(0);
          char grade = 'C';
     
          switch(grade)
          {
             case 'A' :
                System.out.println("  "); 
                break;
             case 'B' :
             case 'C' :
                System.out.println("  ");
                break;
             case 'D' :
                System.out.println("  ");
             case 'F' :
                System.out.println("        ");
                break;
             default :
                System.out.println("    ");
          }
          System.out.println("      " + grade);
       }
    }
    

    以上のコードコンパイルの実行結果は以下の通りです.
      
          C