1. 程式人生 > >2.6 流程控制

2.6 流程控制

一、結構:

  java程式的流程控制分為3種:順序結構、分支結構、迴圈結構;

  

 

1.1順結構:

  順序結構只能順序執行,不能進行判斷和選擇,因此需要分支結構。

1.2分支結構;

  if和switch語句;

1.2.1 if單分支:

  

public class Test{
    public static void main(String[] args){
        // 隨機產生一個隨機整數[10,30]
        int r = (int)(Math.random()*(30-10+1)) + 10;
        
        if
(r > 15){ System.out.println(r+">15"); }else{ System.out.println(r+"<=15"); } } }

1.2.2if 多分支:

public class Test01{
    public static void main(String[] args){
        // 隨機產生一個隨機整數[10,30]
        int r = (int)(Math.random()*(30-10+1)) + 10;
        
        
if(r > 15){ System.out.println(r+">15"); }else if(r == 15){ System.out.println(r+"=15"); }else{ System.out.println(r+"<15"); } } }

  注意:

  a、 ifelse關鍵字只能寫一次,else if視情況而定;

  b、if分支時,如果判斷大於大的值,用>,如果判斷小於小的值,用<號,進行程式碼優化;

1.3  if巢狀

 

public class Test{
    public static void main(String[] args){
        float time = 9.5f;
        char sex = '男';
        
        // [1] 進入決賽
        if(time < 10){
            // [2]性別判斷
            if(sex == '男'){
                System.out.println("進入男子組");
            }else {
                System.out.println("進入女子組");
            }
        }else{
            System.out.println("oops,不能進入決賽");
        }
        
    }
}

 

  注意:巢狀的深度不易超過4

1.4  多值匹配分支switch

  

public class Test{
    public static void main(String[] args){
switch(week){
            case 1:{
                System.out.println("寫程式碼");
                // 結束繼續匹配
                break;
            }
            case 2:{
                System.out.println("看電影");
                break;
            }
            case 3:{
                System.out.println("打遊戲");
                break;
            }
            case 4:{
                System.out.println("旅遊");
                break;
            }
            case 5:{
                System.out.println("開房打遊戲");
                break;
            }
            case 6:{
                System.out.println("打牌");
                break;
            }
            case 7:{
                System.out.println("睡覺");
                break;
            }
            default:{
                System.out.println("預設匹配...");
                break;
            }
        }
}
}

1.5 switch的兩種特殊的情況:

1.5.1 省略break;

public class Test{
       public static void main(String[] args){
        int week = 1;
        switch(week){
            case 1:{
                System.out.println("寫程式碼");
            }
            case 2:{
                System.out.println("看電影");
            }
            case 3:{
                System.out.println("打遊戲");
                break;
            }
            case 4:{
                System.out.println("旅遊");
                break;
            }
            case 5:{
                System.out.println("開房打遊戲");
                break;
            }
            case 6:{
                System.out.println("打牌");
                break;
            }
            case 7:{
                System.out.println("睡覺");
                break;
            }
            default:{
                System.out.println("預設匹配...");
                break;
            }
        }
}
}

  輸出:寫程式碼 看電影 打遊戲;

1.5.2  當多個case的結果一行時,可以省略整個語句塊;

  

public class Test08{
    public static void main(String[] args){
        
        // 隨機產生一個字元(a-z)判斷是母音還是子音
        // [a,z]
        // [0,25]+a
        int r = (int)(Math.random() * (25-0+1)) + 0;
        char c = (char)(r + 'a');
        System.out.println("c = " + c);
        
        switch(c){
            case 'a':
            case 'e':
            case 'i':
            case 'o':
            case 'u':{
                System.out.println("母音:"+c);
                break;
            }
            case 'y':
            case 'r':
            case 'w':{
                System.out.println("半母音:"+c);
                break;
            }
            default:{
                System.out.println("子音:"+c);
                break;
            }
        }
        
    }
}

 

注意:switch表示式支援的匹配方式有整形char、字串(jdk1.7以上)迫不得已時不要用字串匹配字串在switch匹配過程中,效率極低。

二、if 和 switch 的比較:

2.1 對比:

相同點:都是分支語句;

 

不同點:switch 只能進行等值匹配條件必須是整形、char型別,jdk1.7之後支援字串。

 

  if 沒有switch選擇結構的限制,特別適合某個變數處於某個連續區間時的情況;