天天看點

“直線、分叉、圓圈”--程式邏輯之争 | 帶你學《Java程式設計入門》之五

上一篇:帶你學《Java程式設計入門》之四:帶你領略Java運算符之美

【本節目标】

本章重點介紹的是Java的程式邏輯控制,包含了If分支結構、Switch分支語句、While循環結構、For循環結構、循環控制、循環嵌套等内容,這些都是需要你重點掌握的,是Java學習中比較重要的環節。

5.1 程式的結構設計

在程式開發過程之中,一共會存在3種程式邏輯:順序結構、分支結構、循環結構,之前所編寫的代碼,大部分都是順序結構的定義:所有的程式将按照定義的代碼順序依次執行。

範例:順序結構

public class JavaDemo {
   public static void main(String  args[]) {
      int x = 10;
      x = x * 19;
 }
}           

5.2 IF分支結構

If分支結構主要是針對于關系表達式進行判斷處理的分支操作。對于分支語句主要有三類的使用形式,使用的關鍵字:if、else。

if判斷:

if (布爾表達式) {

條件滿足時執行 ;                     

}

if…else判斷:

條件滿足時執行 ;

}else {

條件不滿足時執行

多條件判斷:

條件滿足時執行 ;           

} else if (布爾表達式) {

條件滿足時執行 ;           
條件滿足時執行 ;           

} [else {

條件不滿足時執行 ;           

}]

範例:觀察if語句

public class JavaDemo {
    public static void main(String args[]) {
        int age = 22 ;
        if (age >= 18 && age <= 20) {
            System.out.println("光榮的參與為人民服務的志願活動!") ;
        }
        System.out.println("回到正常的生活軌迹!") ;
    }
}           

現在要進行不滿足條件時的執行可以使用if..else操作。

範例:使用if..else

public class JavaDemo {
    public static void main(String args[]) {
        double money = 20.00 ;
        if (money >= 19.8) {
            System.out.println("走到售賣處,很霸氣的拿出20元,說不用找了。") ;
        } else {
            System.out.println("在灰暗的角落等待着别人剩下的東西。") ;
        }
        System.out.println("好好吃飯,好好的喝!") ;
    }
}           

在使用if的時候最主要的特點是:可以進行若幹條件的判斷。

範例:多條件判斷

public class JavaDemo {
    public static void main(String args[]) {
        double score = 90.00 ;
        if (score >= 90.00 && score <=100) {
            System.out.println("優等生。") ;
        } else if(score >=60 && score < 90) {
            System.out.println("良等生。") ;
        } else {
            System.out.println("差等生。") ;
        }
    }
}           

在進行多條件判斷的時候,可以不寫else語句。但一般推薦要寫上else語句。

5.3 Switch分支語句

Switch是一個開關語句,主要是根據内容來進行判斷。Switch中可以判斷的隻能是資料(整型、char、枚舉、String),而不能夠使用邏輯判斷。文法如下:

switch(資料) {

case 數值 : {
    數值滿足時執行 ;
    [break ;]
} 
case 數值 : 
    數值滿足時執行 ;
    [break ;]
[default:
    所有判斷數值不滿足時的執行 ;
    [break ;]
]           

範例:觀察Switch語句

public class JavaDemo {
    public static void main(String args[]) {
        int ch = 2 ;
        switch (ch) {
            case 2 :
                System.out.println("設定的内容是2。") ;
            case 1 : {
                System.out.println("設定的内容是1。") ;
            }
            default : {
                System.out.println("沒有内容滿足。") ;
            }
        }
    }
}           

上述執行結果,所有語句均輸出。

Switch語句在進行設計的時候,如果在每一個case後面沒有追加break語句,那麼會在第一個比對的case之後繼續執行,一直到全部的switch中後續代碼執行完畢或者遇到break。

範例:使用break

public class JavaDemo {
    public static void main(String args[]) {
        int ch = 2 ;
        switch (ch) {
            case 2 :
                System.out.println("設定的内容是2。") ;
                break ;
            case 1 : {
                System.out.println("設定的内容是1。") ;
                break ;
            }
            default : {
                System.out.println("沒有内容滿足。") ;
                break ;
            }
        }
    }
}           

執行結果為:設定的内容是2。

從JDK1.7開始,Oracle公司推出的JDK1.7版本裡面将開發者呼籲10年以上的功能添加到了系統之中:添加字元串資料的判斷。

範例:判斷字元串

public class JavaDemo {
    public static void main(String args[]) {
        String str = "hello" ;
        switch(str) {
            case "Hello":{
                System.out.println("Hello") ;
                break ;
            }
            case "hello": {
                System.out.println("hello") ;
                break ;
            }
            default: {
                System.out.println("NoMatch") ;
            }
        }
    }
}           

執行結果:hello。

Switch這個語句是程式設計語言發展的重要技術。

5.4 While循環結構

所謂的循環結構是指某一段代碼被重複執行的處理操作。在程式中提供有while語句來實作循環定義,該語句有兩種使用形式:

While循環:

while (布爾表達式) {

條件滿足時執行 ;
修改循環條件 ;           

do…while循環:

do {

條件滿足時執行 ;
修改循環條件 ;               

} while (布爾表達式) ;

範例:實作1~100的累加

public class JavaDemo {
    public static void main(String args[]) {
        int sum = 0 ;    // 儲存最終的計算總和
        int num = 1 ; // 進行循環控制
        while (num <= 100) {    // 循環的執行條件
            sum += num ;    // 累加
            num ++ ;    // 修改循環條件
        }
        System.out.println(sum) ;
    }
}           

執行結果:5050。

除了使用while循環之外,也可以使用do-while來進行處理。

範例:使用do…while實作累加

public class JavaDemo {
    public static void main(String args[]) {
        int sum = 0 ;    // 儲存最終的計算總和
        int num = 1 ; // 進行循環控制
        do {    // 循環的執行條件
            sum += num ;    // 累加
            num ++ ;    // 修改循環條件
        } while (num <= 100) ;
        System.out.println(sum) ;
    }
}           

While循環與do…while循環的最大差别在于:

While循環是先判斷後執行,而do…while先執行一次後判斷。開發中能見到do…while循環的幾率為1%,99%的情況下首選的是while循環。

5.5 For循環結構

for循環也是一種正常的使用結構,其使用文法如下:

**for (定義循環的初始化數值 ; 循環判斷 ; 修改循環資料) {

循環語句的執行 ;           

}**

範例:使用for循環實作1~100的累加

public class JavaDemo {
    public static void main(String args[]) {
        int sum = 0 ;    // 儲存最終的計算總和
        for (int x = 1 ; x <= 100 ; x ++) {
            sum += x ;    // 累加
        }
        System.out.println(sum) ;
    }
}           

要想清楚觀察到三個操作定義,可以拆開處理。

public class JavaDemo {
    public static void main(String args[]) {
        int sum = 0 ;    // 儲存最終的計算總和
        int x = 1 ;    // 循環條件初始化
        for ( ; x <= 100 ; ) {
            sum += x ;    // 累加
            x ++ ; // 修改循環條件
        }
        System.out.println(sum) ;
    }
}           

對于while和for循環的選擇隻有一個參考标準:

**在明确确定循環次數的情況下,for循環優先選擇;

在不知道循環次數但知道循環結束條件的情況下使用while循環。**

5.6 循環控制

在循環語句定義的時候還有兩個控制語句:break、continue;

  • break主要功能是退出整個循環結構
public class JavaDemo {
    public static void main(String args[]) {
        for (int x = 0 ; x < 10 ; x ++) {
            if (x == 3) {
                break ;    // 循環結束
            }
            System.out.print(x + "、") ;
        }
    }
}           

執行結果:0、1、2

  • continue嚴格來講隻是結束目前的一次調用(結束目前循環)
public class JavaDemo {
    public static void main(String args[]) {
        for (int x = 0 ; x < 10 ; x ++) {
            if (x == 3) {
                continue ;    // 循環結束
            }
            System.out.print(x + "、") ;
        }
    }
}           

執行結果:0、1、2、4、5、6、7、8、9、

當執行到continue的時候就表示在目前的語句之中後續代碼不再執行,而直接進行後續的判斷處理。

在C語言裡有一個goto的指令,這個指令會直接造成代碼混亂,是以在開發中一般都對其深惡痛絕,但是在Java中可以利用continue實作部分goto功能。

範例:利用continue實作部分goto功能

public class JavaDemo {
    public static void main(String args[]) {
        point: for (int x = 0 ; x < 10 ; x ++) {
            for (int y = 0 ; y < 3 ; y ++) {
                if (x == y) {
                    continue point ;    // 循環結束
                }
                System.out.print(x + "、") ;
            }
            System.out.println() ;
        }
    }
}           
“直線、分叉、圓圈”--程式邏輯之争 | 帶你學《Java程式設計入門》之五

圖一 運作結果

對于上述代碼不建議開發者使用。

循環嵌套

在一個循環語句之中嵌套其它的循環語句就稱為循環嵌套處理。循環嵌套層次越多時間複雜度就越高。下面通過嵌套觀察兩個簡單的程式。

範例:列印乘法口訣表

“直線、分叉、圓圈”--程式邏輯之争 | 帶你學《Java程式設計入門》之五

圖二 列印九九乘法表

public class JavaDemo {
    public static void main(String args[]) {
        for (int x = 1 ; x <= 9 ; x ++) {    // 口訣表最多9行
            for (int y = 1 ; y <= x ; y ++) {
                System.out.print(y + "*" + x + "=" + (x * y) + "\t") ;
            }
            System.out.println() ;// 換行
        }
    }
}           

範例:列印三角形

“直線、分叉、圓圈”--程式邏輯之争 | 帶你學《Java程式設計入門》之五

圖三 列印三角形

public class JavaDemo {
    public static void main(String args[]) {
        int line = 5 ; // 總體行數
        for (int x = 0 ; x < line ; x ++) {
            for (int y = 0 ; y < line - x ; y ++) {
                System.out.print(" ") ;
            }
            for (int y = 0 ; y <= x ; y ++) {
                System.out.print("* ") ;
            }
            System.out.println() ;
        }
    }
}           

這些是用來做程式邏輯訓練的,實際開發不會涉及到。

想學習更多的Java的課程嗎?從小白到大神,從入門到精通,更多精彩不容錯過!免費為您提供更多的學習資源。

本内容視訊來源于

阿裡雲大學 下一篇:帶你學《Java程式設計入門》之六:初識“方法”,步入程式設計領域 更多Java入門程式設計文章檢視此處