楊老師課堂_Java教程第三篇之控制語句

楊校發表於2017-12-24
版權宣告:本文為博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/kese7952/article/details/78885553

今天主要是講解以下知識點:
1、引用型別變數的建立及使用
2、流程控制語句之選擇語句
3、流程控制語句之迴圈語句
4、迴圈高階

01建立引用型別變數公式

* A: 建立引用型別變數公式
    * a: 我們要學的Scanner類是屬於引用資料型別,我們先了解下引用資料型別。
    * b: 引用資料型別的定義格式
        * 與定義基本資料型別變數不同,引用資料型別的變數定義及賦值有一個相對固定的步驟或格式。
        * 資料型別  變數名  =  new 資料型別();
    * c: 引用資料型別的使用
        * 每種引用資料型別都有其功能,我們可以呼叫該型別例項的功能。
        * 變數名.方法名();

02Scanner類的使用

* A: Scanner類的使用
    * a: 導包import java.util.Scanner;
    * b:建立鍵盤錄入物件 Scanner sc = new Scanner(System.in);
    * c: 讀取鍵盤錄入的一個整數
        * int enterNumber = sc.nextInt();
    * d: 讀取鍵盤錄入的字串
        * String enterString = sc.next();
* B: 案例程式碼
    import java.util.Scanner;
    public class Demo05Scanner{
        public static void main(String[] args) 
        {
            Scanner sc = new Scanner(System.in);

            int enterNumber = sc.nextInt();
            System.out.println("使用者輸入的整數為"+enterNumber);

            String enterString = sc.next();
            System.out.println("使用者輸入的字串為"+enterString);
        }
    }

03Random隨機數類的使用_1

* A: Random隨機數類的使用_1
    * a: 功能
        * 生成隨機數需要使用到引用型別隨機數Random類
    * b: 使用方式
        * import導包:所屬包java.util. Random
        * 建立例項格式:Random  random = new Random ();
        * 呼叫方法
            * nextInt(int maxValue) 產生[0,maxValue)範圍的隨機數,包含0不包含maxValue
            * nextDouble()  產生[0,1)範圍的隨機數
            如:
                Random  random = new Random ();
                int  myNumber = random.nextInt(100);//結果為0-99的一個數
* B: 案例程式碼
    import java.util.Random;
    public class RandomDemo{
        public static void main(String[] args){
           Random ran = new Random();
           // Random類中的,產生隨機數的功能
           int i = ran.nextInt(100);
           System.out.println(i);

           //問題? 產生隨機數,範圍 1-100之間
           // nextInt(100) 0-99 + 1
        }
    }

04Random隨機數類的使用_2

* A: Random隨機數類的使用_2
    * a: 呼叫方法
        * nextDouble()  產生[0,1)範圍的隨機數
        如:
            Random  random = new Random ();
            int  myNumber = random.nextDouble();//結果為0.0-1.0之間的數(包括0.0不包括1.0)

05if語句格式第一種

* A: if語句格式第一種
    * a: 書寫格式
        if(比較表示式) {
            語句體;
        }
    * b:執行流程:
        * 先計算比較表示式的值,看其返回值是true還是false。
        * 如果是true,就執行語句體;
        * 如果是false,就不執行語句體;
* B: 案例程式碼
    public class IfDemo{
        public static void main(String[] args){
              int i = 5 ;
              //對變數i進行if判斷
              if(i > 5){
                  System.out.println("if中的條件是true");
                  i++;
              }

              System.out.println(i);
        }
    }

06if語句格式第二種

* A: if語句格式第二種
    * a: 書寫格式
        if(比較表示式) {
            語句體1;
        }else {
            語句體2;
        }
    * b:執行流程:
        * 首先計算比較表示式的值,看其返回值是true還是false。
        * 如果是true,就執行語句體1;
        * 如果是false,就執行語句體2;
* B: 案例程式碼
    public class IfElseDemo{
        public static void main(String[] args){
             int i = 16 ;
             //判斷變數,是奇偶數, 除以2,看餘數是0還是1
             if( i % 2 == 0 ){
                 System.out.println(i+" 是偶數");
             }else{
                 System.out.println(i+" 是奇數");
             }
        }
    }

07if語句格式第三種

* A: if語句格式第三種
    * a: 書寫格式
            if(比較表示式1) {
                語句體1;
            }else if(比較表示式2) {
                語句體2;
            }else if(比較表示式3) {
                語句體3;
            }
            ...
            else {
                語句體n+1;
            }
    * b:執行流程:
        * 首先計算比較表示式1看其返回值是true還是false,
        * 如果是true,就執行語句體1,if語句結束。
        * 如果是false,接著計算比較表示式2看其返回值是true還是false,

        * 如果是true,就執行語句體2,if語句結束。
        * 如果是false,接著計算比較表示式3看其返回值是true還是false,

        * 如果都是false,就執行語句體n+1。
* B: 案例程式碼
    public class IfElseIfDemo{
        public static void main(String[] args){
            //成績判斷要求 ,成績>80  成績>70  成績>60  不及格
            //定義變數,儲存成績
            int grade = 75;
            //使用if else if 語句對成績判斷
            if( grade > 80 ){
                System.out.println(grade+" 成績是優");
            }else if ( grade > 70){
                System.out.println(grade+" 成績是良");
            }else if ( grade > 60){
                System.out.println(grade+" 成績是中");
            }else{
                System.out.println(grade+" 成績是差");
            }

        }
    }

08if語句和三元運算子的互換

* A: 三元運算子
    * a: 概念
        * 用來完成簡單的選擇邏輯,即根據條件判斷,從兩個選擇中選擇一種執行
    * b: 使用格式
        * (條件表示式)?表示式1:表示式2;
    * c: 運算規則
        * 1: 判斷條件表示式,結果為一個布林值
        * 2: true,運算結果為表示式1
        * 3: false,運算結果為表示式2
* B: 案例程式碼
    public class IfElseDemo_1{
        public static void main(String[] args){
            int j = 6;
            int i = 15;
            //使用if語句,判斷出最大值
            if(i>j){
            int j = 6;
                System.out.println(i+" 是最大值");
            }else{
                System.out.println(j+" 是最大值");
            }

            //使用三元運算實現
            int k = i>j ? i : j;
            System.out.println(k+" 是最大值");
        }
    }
* C: 使用if語句還是三元表示式
    * 判斷條件多,使用if
    * 三元,必須有結果的, if 可以沒有結果的

09while迴圈

* A: while迴圈結構
    * a: 使用格式
        初始化表示式;
        while(條件){
            迴圈體
        }
    * b: 執行順序
          當條件是true,就執行迴圈體,執行完迴圈體後
          程式再次執行while中的條件,如果條件還是true,繼續執行迴圈體
          直到條件是false的時候,迴圈就結束
* B: 案例程式碼
    public class WhileDemo{
        public static void main(String[] args){
            //輸出 1-4之間的整數
            //定義變數,整數型別, 迴圈的條件
            int i = 1;
            while( i < 5 ){
                System.out.println(i);
                i++;
            }
        }
    }

10for迴圈_1

* A: for迴圈_1
    * a: 使用格式
         for(初始化變數 ; 條件 ; 增量){
             迴圈體;
         }
    * b: 各模組解釋
        初始化變數: 定義變數,作用是用來控制迴圈的次數
        條件: 當條件是true,執行迴圈體,條件是false,結束迴圈
        增量: 變數自增情況 
* B: 案例程式碼
    public class ForDemo{
        public static void main(String[] args){
            //for迴圈,輸出0-10
            for(int i = 0 ; i < 11 ; i++){
                System.out.println(i);
            }
        }
    }

11for迴圈_2

* A: for迴圈的執行流程
    for(① ; ② ; ③){
        ④
    }
    第一步,執行①
    第二步,執行②,如果判斷結果為true,執行第三步,如果判斷結果為false,執行第五步
    第三步,執行④
    第四步,執行③,然後重複執行第二步
    第五步,退出迴圈

12for迴圈_3

* A: 案例
    * a: 利用for迴圈,計算1+4的結果
* B: 案例程式碼
    public class ForDemo_1{
        public static void main(String[] args){
            // 定義變數,記錄求和後的資料
            int sum = 0;
            // 利用迴圈,將變數從1變化到4
            for(int i = 1 ; i <= 4 ; i++){
                //對變數進行求和
                sum = sum + i;
            }
            System.out.println(sum);
        }
    }

13do_while迴圈

* A: do_while迴圈
    * a: 使用格式
        do{
           迴圈體;
        }while(條件);
    * b: 執行順序
        先執行一次迴圈體,然後再判斷條件,如果條件為true,繼續執行迴圈體,
        如果條件為false,迴圈結束。
    * c: 特點
        * 無條件先執行一次
* B: 案例程式碼
    public class DoWhileDemo{
        public static void main(String[] args){
            int i = 0; 
            do{
                System.out.println(i);
                i++;
            }while( i <  5);
        }
    }

14死迴圈

* A: 死迴圈概述
    * 無限迴圈存在的原因是並不知道迴圈多少次,而是根據某些條件,來控制迴圈
* B: 死迴圈格式
    * while(true){}
    * for(;;){}

15巢狀for迴圈_1

* A: 巢狀迴圈的概述
    * 巢狀迴圈是指在一個迴圈語句的迴圈體中再定義一個迴圈語句的語法結構。while、do…while、for迴圈語句都可以進行巢狀,並且它們之間也可以互相巢狀,如最常見的在for迴圈中巢狀for迴圈。
* B: 巢狀迴圈的格式
    for(初始化表示式; 迴圈條件; 操作表示式) {
        ………
        for(初始化表示式; 迴圈條件; 操作表示式) {
            執行語句
            ………
        }
        ………
    }
* C: 各模組解釋
    * 總的迴圈次數 =  內迴圈次數 * 外迴圈的次數
    * 內迴圈,是外迴圈的迴圈體

    * 外迴圈,控制的是行數
    * 內迴圈,控制的是每行的個數

16巢狀for迴圈_2

* A: 案例
    * a: 列印正三角形
* B: 案例程式碼
    public class ForForDemo{
        public static void main(String[] args){
            for(int i = 0 ; i < 9 ; i++){
                for(int j = 0; j < i+1 ;j++){
                    System.out.print("* ");
                }
                System.out.println();
            }
        }
    }

17break語句

* A: break語句
    * a: 作用
        * 跳出所在的迴圈體
    * b: 書寫位置
        * 必須出現在迴圈或選擇結構內
    * c: 舉例
        for(int i=0; i<10; i++) {
            if(i>5) {
            break;
        }
            System.out.println(“我愛Java”+i);
        }
        //會從0-5輸出6次“我愛Java”
* B: break詳細解釋
    * a: 作用
        * 在loop/sw
        * 
        * 
        * 
        * itch選擇或者迴圈過程中,我們總是滿足布林表達條件才能執行對應的程式碼,然而在這些邏輯過程中,
            可以使用一些關鍵字直接跳出正在執行的程式碼,去執行後邊或者指定位置的程式碼,
            這些關鍵字一旦出現就可以跳轉語句執行順序。
    * b: 使用方式
        * 無法單獨使用,必須將break關鍵字置於switch或迴圈語句中
    * c: 執行規律
        * 不需要判斷任何條件,只要遇到break變直接跳出執行後續程式碼。會完全跳出選擇或者迴圈結構
        * 只能跳出最近的程式碼塊,不能跨越多級程式碼塊

* C:迴圈標號
    * a: 為什麼使用迴圈標號
        * 當在雙層迴圈或者迴圈內有switch選擇語句時,我們發現,使用break或者continue所作用的物件均是內層語句,無法直接跳出外層迴圈,這時就需要使用標號語句跳轉了.
    * b: 使用方式
        * 在外層迴圈外的某行前邊,使用後邊跟有冒號”:”的識別符號,即定義完畢。
          使用時當在內層迴圈使用break或continue時後邊緊跟之前定義的標號即可
    * c: 執行規律
        * 當外層迴圈外定義了標號
        * 內層使用break,終止內外雙層迴圈。
        * 內層使用continue,終止內層迴圈,繼續外層迴圈。

18continue語句

* A: continue語句
    * a: 作用
        * 提前結束本次迴圈,繼續進行下次迴圈
    * b: 使用方式
        * 無法單獨使用,必須將continue關鍵字置於迴圈語句中
    * c:執行規律
        * 不需要判斷任何條件,只要遇到continue變直接跳出本輪迴圈進行下次迴圈
    * d:案例程式碼
        public class ContinueDemo{
            public static void main(String[] args){
                for(int i = 0 ; i < 10 ; i++){
                    if(i%2==0){
                        continue;
                    }
                    System.out.println(i);
                }
            }
        }
        //會把0-9之間所有的奇數列印到控制檯上

19猜數字小遊戲

* A: 猜數字小遊戲     
    * a: 分析
        * 使用者給的數可能大於、小於、或等於被猜的數,這樣就會出現三種情況,用前面講的三元運算子可以實現,
            但是得用三元運算子的巢狀,比較麻煩!可以用更簡單的方式if條件判斷,可以有三個以上的條件
    * b: 需求分析
        * 後臺預先生成一個隨機數1-100,使用者鍵盤錄入猜數字
        * 如果猜對了,列印“恭喜您,答對了”
        * 如果猜錯了
        * 猜大了:列印“sorry,您猜大了!”
        * 猜小了:列印“sorry,您猜小了!”
                直到數字猜到為止
                最多隻能猜5次,否則提示“sorry,您沒有機會了!”
* B: 案例程式碼
    /*
        猜數字小遊戲

        完成猜數字小遊戲:
        1、產生隨機數
        後臺預先生成一個隨機數1-100,使用者鍵盤錄入猜數字
        2、通過if語句對使用者猜的數與隨機數進行比較
        如果猜對了,列印“恭喜您,答對了”
        如果猜錯了
        猜大了:列印“sorry,您猜大了!”
        猜小了:列印“sorry,您猜小了!”
        3、通過for迴圈完成使用者猜數的迴圈
        直到數字猜到為止
        最多隻能猜5次,否則提示“sorry,您沒有機會了!”

    */
    import java.util.Random;
    import java.util.Scanner;
    //通過*的方式可以一次匯入該包下所有的類,但是不建議使用。建議使用哪個導哪個。
    //import java.util.*;
    public class GuessNumber{
        public static void main(String[] args) {
            //1、產生隨機數
            //後臺預先生成一個隨機數1-100,使用者鍵盤錄入猜數字
            //建立隨機數物件
            Random random = new Random();
            //產生一個1-100的隨機數
            int randomNumber = random.nextInt(100)+1;
            //System.out.println("我產生的隨機數是:"+randomNumber+"你猜猜是多少?");  作弊專用

            //產生控制檯錄入的Scanner物件
            Scanner sc = new Scanner(System.in);
            //3、通過for迴圈完成使用者猜數的迴圈
            //通過for迴圈完成猜數字邏輯
            for(int i=1; i<=5; i++){
                //提示使用者輸入要猜的數,用變數接收
                System.out.println();
                System.out.println("請您輸入一個1-100的數:");
                int guessNumber = sc.nextInt();

                //2、通過if語句對使用者猜的數與隨機數進行比較
                //如果猜對了
                if(guessNumber==randomNumber) {
                    //列印猜對後的提示
                    System.out.println("恭喜您,猜對了!");
                    //跳出迴圈,不用再猜了
                    break;
                }else {//如果猜錯了
                    //如果猜大了
                    if(guessNumber>randomNumber) {
                        System.out.println("sorry,您猜大了!");
                    }else {//如果猜小了
                        System.out.println("sorry,您猜小了!");
                    }
                }
                //如果猜到了最後的第5次仍然沒有猜對就跳出迴圈
                if(i==5) {
                    System.out.println("對不起,點太背,下次再來吧!");
                    break;
                }
                //每次猜錯後,都提示還有多少次機會
                System.out.println("請注意,您還有"+(5-i)+"次機會,請慎重作答!");
            }
        }
    }


相關文章