黑馬day03

今天內容安排:
1河狐、猜數(shù)字小游戲
1返咱、超市購物小票加入業(yè)務邏輯

01猜數(shù)字游戲需求.avi
02隨機數(shù)Random類.avi
03if簡介.avi
04循環(huán)簡介.avi
05猜數(shù)字小游戲代碼實現(xiàn).avi

01猜數(shù)字游戲需求

* A: 猜數(shù)字小游戲
    * a: 分析完成功能所用的知識點
        * 1:生成隨機數(shù)
        * 2: if語句進行條件判斷
        * 3: for循環(huán)結構
* B:超市購物小票
    * a: 添加新的業(yè)務邏輯

02隨機數(shù)Random類

* A: Random類
    * a: 功能
        * 生成隨機數(shù)需要使用到引用類型隨機數(shù)Random類
    * b: 使用方式
        * import導包:所屬包java.util. Random
        * 創(chuàng)建實例格式:Random  random = new Random ();
        * 調用方法
            * nextInt(int maxValue)    產生[0,maxValue)范圍的隨機數(shù),包含0不包含maxValue
            * nextDouble()  產生[0,1)范圍的隨機數(shù)
            如:
                Random  random = new Random ();
                int  myNumber = random.nextInt(100);//結果為0-99的一個數(shù)
* B: 案例代碼
    /*
        引用數(shù)據(jù)類型:Random隨機數(shù)
        
        java.util.Random
        方法:
        nextInt(int maxValue)    產生[0,maxValue)范圍的隨機數(shù)
        nextDouble()  產生[0,1)范圍的隨機數(shù)

        求1-100的隨機數(shù):random.nextInt(100)+1
        附加題:求m到n的隨機數(shù)
    */
    //導包
    import java.util.Random;
    public class Demo01Random {
        public static void main(String[] args) {
            //創(chuàng)建對象
            Random random = new Random();
            
            //調用方法
            int randomNumber = random.nextInt(100)+1;
            System.out.println(randomNumber);
            
            double randomNumber2 = random.nextDouble();
            System.out.println(randomNumber2);
        }
    }

03if簡介

* A: if條件判斷語句
    * a: 方式一
        * 1: 書寫格式
            if(比較表達式) {
                語句體;
            }
        * 2:執(zhí)行流程:
            * 先計算比較表達式的值,看其返回值是true還是false。
            * 如果是true,就執(zhí)行語句體;
            * 如果是false吠式,就不執(zhí)行語句體陡厘;
    * b: 方式二
        * 1: 書寫格式
            if(比較表達式) {
                語句體1;
            }else {
                語句體2;
            }
        * 2:執(zhí)行流程:
            * 首先計算比較表達式的值,看其返回值是true還是false特占。
            * 如果是true糙置,就執(zhí)行語句體1;
            * 如果是false是目,就執(zhí)行語句體2谤饭;
    * c: 方式三
        * 1: 書寫格式
            if(比較表達式1) {
                語句體1;
            }else if(比較表達式2) {
                語句體2;
            }else if(比較表達式3) {
                語句體3;
            }
            ...
            else {
                語句體n+1;
            }
        * 2:執(zhí)行流程:
            * 首先計算比較表達式1看其返回值是true還是false,
            * 如果是true懊纳,就執(zhí)行語句體1揉抵,if語句結束。
            * 如果是false嗤疯,接著計算比較表達式2看其返回值是true還是false冤今,
            
            * 如果是true,就執(zhí)行語句體2茂缚,if語句結束辟汰。
            * 如果是false,接著計算比較表達式3看其返回值是true還是false阱佛,
            
            * 如果都是false,就執(zhí)行語句體n+1戴而。
* B: 案例代碼
    /*
        if語句:條件判斷語句
        
        格式:滿足條件就執(zhí)行對應的語句
        if(條件表達式){
          執(zhí)行語句凑术;
        }else if(條件表達式){
            執(zhí)行語句;
        }else {
            執(zhí)行語句所意;
        }
    */
    import java.util.Random;
    public class Demo02If{
        //判斷小明的得分情況淮逊,如果是90-100分,就打印太棒了
        //如果60-89分扶踊,就打印還不錯
        //其他情況泄鹏,就打印 什么情況?~
        public static void main(String[] args) {
            
            //產生隨機分數(shù)
            Random random = new Random();
            int score = random.nextInt(101);
            System.out.print(score);
            
            //開始條件判斷
            if(score>=90&&score<=100){
                System.out.println("太棒了");
            }else if(score>=60&&score<=89){
                System.out.println("還不錯");
            }else {
                System.out.println("什么情況秧耗?备籽!");
            }
        }
    } 

04循環(huán)簡介

* A: 循環(huán)
    * a:  需求:我們需要在用戶輸錯時,讓用戶再次輸入分井,讓用戶輸入的動作循環(huán)執(zhí)行车猬。這時需要使用到循環(huán)語句
    * b: 分類
        * for循環(huán)結構
        * while循環(huán)結構
        * do while循環(huán)結構
    * c: 循環(huán)的重要組成部分
        * 循環(huán)變量初始化 (初始化表達式)
        * 循環(huán)出口(布爾表達式)
        * 循環(huán)增量(步進表達式)
        * 循環(huán)邏輯內容(循環(huán)體)
* B: for循環(huán)
    * a: 書寫格式
        for(初始化表達式①;布爾表達式②尺锚;步進表達式④){
            循環(huán)體③
        }
    * b: 執(zhí)行順序
        * ①②③④>②③④>②③④… ②不滿足為止珠闰。
        * ①負責完成循環(huán)變量初始化
        * ②負責判斷是否滿足循環(huán)條件,不滿足則跳出循環(huán)
        * ③具體執(zhí)行的語句
        * ④循環(huán)后瘫辩,循環(huán)條件所涉及變量的變化情況
    * 舉例:
        for(int i=0; i<10; i++) {
            System.out.println(“我愛Java”+i);
        }
        //會從0-9輸出10次“我愛Java”
* C: 案例代碼
    /*
        循環(huán):
            for/while/doWhile
        循環(huán)滿足條件:
            初始化表達式
            布爾表達式
            步進表達式
            循環(huán)體
            
        for(初始化表達式;布爾表達式;步進表達式){
            循環(huán)體
        }
        
        初始化表達式執(zhí)行一次
        布爾表達式   循環(huán)體   步進表達式   循環(huán)執(zhí)行  直到布爾表達式條件不滿足
        
        break:直接跳出循環(huán)
    */
    public class Demo03For {
        public static void main(String[] args) {
            //使用for循環(huán)伏嗜,循環(huán)10次
            for(int i=0; i<10; i++){
                //每次打印我愛java字符串并且打印當前次數(shù)
                System.out.println("i love java坛悉!"+i);
                //使用break關鍵字,在第六次打印結束后跳出循環(huán)
                if(i == 5) {
                    break;
                }
            }
        }
    }

05猜數(shù)字小游戲代碼實現(xiàn)

* A: 猜數(shù)字小游戲        
    * a: 分析
        * 用戶給的數(shù)可能大于承绸、小于裸影、或等于被猜的數(shù),這樣就會出現(xiàn)三種情況八酒,用前面講的三元運算符可以實現(xiàn)空民,
            但是得用三元運算符的嵌套,比較麻煩羞迷!可以用更簡單的方式if條件判斷界轩,可以有三個以上的條件
    * b: 需求分析
        * 后臺預先生成一個隨機數(shù)1-100,用戶鍵盤錄入猜數(shù)字
        * 如果猜對了衔瓮,打印“恭喜您浊猾,答對了”
        * 如果猜錯了
        * 猜大了:打印“sorry,您猜大了!”
        * 猜小了:打印“sorry热鞍,您猜小了!”
                直到數(shù)字猜到為止
                最多只能猜5次葫慎,否則提示“sorry,您沒有機會了!”
* B: 案例代碼
    /*
        猜數(shù)字小游戲
        
        完成猜數(shù)字小游戲:
        1薇宠、產生隨機數(shù)
        后臺預先生成一個隨機數(shù)1-100偷办,用戶鍵盤錄入猜數(shù)字
        2、通過if語句對用戶猜的數(shù)與隨機數(shù)進行比較
        如果猜對了澄港,打印“恭喜您椒涯,答對了”
        如果猜錯了
        猜大了:打印“sorry,您猜大了!”
        猜小了:打印“sorry回梧,您猜小了!”
        3废岂、通過for循環(huán)完成用戶猜數(shù)的循環(huán)
        直到數(shù)字猜到為止
        最多只能猜5次,否則提示“sorry狱意,您沒有機會了!”

    */
    import java.util.Random;
    import java.util.Scanner;
    //通過*的方式可以一次導入該包下所有的類湖苞,但是不建議使用。建議使用哪個導哪個详囤。
    //import java.util.*;
    public class GuessNumber{
        public static void main(String[] args) {
            //1财骨、產生隨機數(shù)
            //后臺預先生成一個隨機數(shù)1-100,用戶鍵盤錄入猜數(shù)字
            //創(chuàng)建隨機數(shù)對象
            Random random = new Random();
            //產生一個1-100的隨機數(shù)
            int randomNumber = random.nextInt(100)+1;
            //System.out.println("我產生的隨機數(shù)是:"+randomNumber+"你猜猜是多少藏姐?");  作弊專用

            //產生控制臺錄入的Scanner對象
            Scanner sc = new Scanner(System.in);
            //3蚓再、通過for循環(huán)完成用戶猜數(shù)的循環(huán)
            //通過for循環(huán)完成猜數(shù)字邏輯
            for(int i=1; i<=5; i++){
                //提示用戶輸入要猜的數(shù),用變量接收
                System.out.println();
                System.out.println("請您輸入一個1-100的數(shù):");
                int guessNumber = sc.nextInt();
                
                //2包各、通過if語句對用戶猜的數(shù)與隨機數(shù)進行比較
                //如果猜對了
                if(guessNumber==randomNumber) {
                    //打印猜對后的提示
                    System.out.println("恭喜您摘仅,猜對了!");
                    //跳出循環(huán)问畅,不用再猜了
                    break;
                }else {//如果猜錯了
                    //如果猜大了
                    if(guessNumber>randomNumber) {
                        System.out.println("sorry娃属,您猜大了!");
                    }else {//如果猜小了
                        System.out.println("sorry六荒,您猜小了!");
                    }
                }
                //如果猜到了最后的第5次仍然沒有猜對就跳出循環(huán)
                if(i==5) {
                    System.out.println("對不起,點太背矾端,下次再來吧掏击!");
                    break;
                }
                //每次猜錯后,都提示還有多少次機會
                System.out.println("請注意秩铆,您還有"+(5-i)+"次機會砚亭,請慎重作答!");
            }
        }
    }

======================================第一階段===========================================
06if介紹.avi
07for循環(huán)注意事項.avi
08while與dowhile循環(huán).avi
09break與continue.avi

06if介紹

* A: if語句詳細解釋        
    * a: 單條件判斷
        * 1: 書寫格式
            if(判斷條件){
                執(zhí)行語句體殴玛;
            }
            * 滿足if條件即執(zhí)行捅膘,不滿足不執(zhí)行。如年齡大于18歲可以注冊婚戀網(wǎng)站
        * 2:執(zhí)行流程:
            * 先計算比較表達式的值滚粟,看其返回值是true還是false寻仗。
            * 如果是true,就執(zhí)行語句體凡壤;
            * 如果是false署尤,就不執(zhí)行語句體;
    * b: 互斥條件判斷
        * 1: 書寫格式
            if(條件表達式){
                執(zhí)行語句體1亚侠;
            }else{
                執(zhí)行語句體2曹体;
            }
            * 滿足條件執(zhí)行if語句體,不滿足執(zhí)行else語句體硝烂。如60分以上及格混坞,60分以下不及格,需要重考

        * 2:執(zhí)行流程:
            * 首先計算比較表達式的值钢坦,看其返回值是true還是false。
            * 如果是true啥酱,就執(zhí)行語句體1爹凹;
            * 如果是false,就執(zhí)行語句體2镶殷;
    * c: 多條件判斷
        * 1: 書寫格式
            if(比較表達式1) {
                語句體1;
            }else if(比較表達式2) {
                語句體2;
            }else if(比較表達式3) {
                語句體3;
            }
            ...
            else {
                語句體n+1;
            }
            * 在多個條件中選擇滿足條件的if語句體執(zhí)行禾酱,如12月份對應四季
        * 2:執(zhí)行流程:
            * 首先計算比較表達式1看其返回值是true還是false,
            * 如果是true绘趋,就執(zhí)行語句體1颤陶,if語句結束。
            * 如果是false陷遮,接著計算比較表達式2看其返回值是true還是false滓走,
            
            * 如果是true,就執(zhí)行語句體2帽馋,if語句結束搅方。
            * 如果是false比吭,接著計算比較表達式3看其返回值是true還是false,
            
            * 如果都是false姨涡,就執(zhí)行語句體n+1衩藤。
    * d: 多層條件判斷(if語句的嵌套)
        * 1: 書寫格式
                if(比較表達式1){
                    if(比較表達式2){
                        語句體1;
                    } 
                }
                
                if(比較表達式1){
                    if(比較表達式2){
                        語句體1涛漂;
                    } else {
                        語句體2赏表;
                    }
                } else {
                    語句體3;
                }

                * 在復雜的業(yè)務邏輯中匈仗,可以使用多層的條件判斷代碼是否執(zhí)行瓢剿。如60分以下的同學不及格重考,60分以上的同學分優(yōu)秀锚沸、良好跋选、及格三個等級。
        * 2:執(zhí)行流程:
            * 首先計算比較表達式1看其返回值是true還是false哗蜈,
            * 如果是false前标,就執(zhí)行語句體3                
            
            
            * 如果是true,接著計算比較表達式2看其返回值是true還是false距潘,
                * 如果為true炼列,就執(zhí)行語句體1
                * 如果為false,就執(zhí)行語句體2
* B: if語句注意事項
    * a:當只有一條語句時音比,if或else后邊的{}可以省略
?    * b: 多條件判斷區(qū)間一般不會重復
?    * c:通過if與具體代碼塊限定了變量作用域俭尖,此例還可以進一步驗證java編譯時只檢查語法錯誤,不檢查變量值洞翩。    
?    * d: 三元運算符類似互斥條件判斷語句稽犁。不同處在于:三元運算符必然會產生一個數(shù)值,該值必須被使用骚亿。
        而if語句可以產生數(shù)值已亥,也可以不產生,僅完成相應業(yè)務邏輯来屠,如打印語句虑椎。 
    * e:案例代碼
        public class  Demo02If
        {
            public static void main(String[] args) 
            {
                int a = 10;
                if(a==10) {
                    System.out.println(a);
                    int b = 20;
                    System.out.println(b);
                }

                //System.out.println(b);

                boolean c = true;
                int d;

                if(c) {
                    System.out.println("測試代碼");
                    d = 100;
                    System.out.println(d);
                }else {
                    d = 200;
                }
                System.out.println(d);
            }
        }
* C: 案例代碼
    /*
        if的詳細解釋:
            單條件判斷,滿足執(zhí)行俱笛,不滿足不執(zhí)行
            互斥條件判斷捆姜,if與else選擇一個執(zhí)行
            多條件判斷
    */
    import java.util.Random;
    public class Demo04If{
        public static void main(String[] args) {
            //滿足18歲,注冊百合網(wǎng)
            int age = 16;
            if(age>=18) {
                System.out.println("實名注冊迎膜,更放心泥技!百合網(wǎng)歡迎您!");
            }
            
            //滿足18歲磕仅,注冊百合網(wǎng)
            if(age>=18) {
                System.out.println("實名注冊零抬,更放心镊讼!百合網(wǎng)歡迎您!");
            }else {
                System.out.println("別著急平夜,以后機會很多蝶棋!");
            }
            System.out.println("=========================================");
            //判斷小明的得分情況,
            //如果90-100分忽妒,就打印太棒了
            //如果80-89分玩裙,就打印還不錯
            //如果60-79分,就打印過得去
            //其他情況段直,就打印 什么情況吃溅?~
            
            //產生隨機分數(shù)
            Random random = new Random();
            //int score = random.nextInt(101);
            int score = 250;
            System.out.print(score);
            
            //開始條件判斷
            if(score>=90&&score<=100){
                System.out.println("太棒了");
            }else if(score>=80&&score<=89){
                System.out.println("還不錯");
            }else if(score>=60&&score<=79){
                System.out.println("過得去");
            }else if(score>=0&&score<=59){
                System.out.println("什么情況?鸯檬!");
            }else {
                System.out.println("你要上天啊决侈,這分也敢改!");
            }
        }
    }

07for循環(huán)注意事項

* A: for循環(huán)注意事項
    * a: for循環(huán)格式
        for(初始化表達式①喧务;布爾表達式②赖歌;步進表達式④){
            循環(huán)體③
        }
        執(zhí)行順序: ①②③④>②③④>②③④… ②不滿足為止。
        ①負責完成循環(huán)變量初始化
        ②負責判斷是否滿足循環(huán)條件功茴,不滿足則跳出循環(huán)
        ③具體執(zhí)行的語句
        ④循環(huán)后庐冯,循環(huán)條件所涉及變量的變化情況
    * b: 注意事項
        * 1:①②③④四個部分均可以為空
            * 當①為空時,注意變量作用域的范圍變化
            * 當②為空時坎穿,為條件永遠為true的死循環(huán)
            * 當③為空時展父,通常沒有意義
            * 當④為空時,可以將其加入到循環(huán)體中玲昧,或同樣成為死循環(huán)
        * 2:初始化表達式①的部分可以同時定義多個變量栖茉,步進表達式可以同時將多個循環(huán)相關變量改變,控制循環(huán)條件
* B: 案例代碼
    public class Demo05For{
        public static void main(String[] args) {
            //初始化表達式可為空
            int i=0;
            for(; i<10; i++){
                System.out.println("我愛java"+i);
            }
            System.out.println(i);
            System.out.println("===============================");
            //布爾表達式可為空孵延,但是循環(huán)將變?yōu)樗姥h(huán)吕漂,無法跳出循環(huán)
            //for(int j=0; ; j++){
            //    System.out.println("我愛java"+j);
            //}
            
            //步進表達式可為空,但是通常會轉移到循環(huán)體最后
            for(int k=0; k<10; ){
                System.out.println("我愛java"+k);
                k++;
            }
            //初始化表達式隙袁、步進表達式軍可以同時操作多個變量
            for(int k=0,m=0; k<10; k++,m+=2){
                System.out.println(m+"我愛java"+k);
            }
        }
    }

08while與dowhile循環(huán)

* A: while循環(huán)結構
    * a: 使用格式
        初始化表達式①
        while(布爾表達式②){
            循環(huán)體③
            步進表達式④
        }
    * b: 執(zhí)行順序
        ①②③④>②③④>②③④… ②不滿足為止。
        ①負責完成循環(huán)變量初始化弃榨。
        ②負責判斷是否滿足循環(huán)條件菩收,不滿足則跳出循環(huán)。
        ③具體執(zhí)行的語句鲸睛。
        ④循環(huán)后娜饵,循環(huán)變量的變化情況。
    * c: 注意事項
        與for循環(huán)的循環(huán)變量作用域不同官辈,for循環(huán)的循環(huán)變量其作用域僅限于循環(huán)體內箱舞,
        而while循環(huán)的循環(huán)變量作用域不局限在循環(huán)體內遍坟。
        與for循環(huán)的循環(huán)條件為空是是死循環(huán)不同,while循環(huán)的循環(huán)條件不能為空
* B: do-while循環(huán)結構
    * a: 使用格式
        初始化表達式①
        do{
            循環(huán)體③
            步進表達式④
        }while(布爾表達式②);    

    * b: 執(zhí)行順序
         ①③④>②③④>②③④… ②不滿足為止晴股。
        ①負責完成循環(huán)變量初始化愿伴。
        ②負責判斷是否滿足循環(huán)條件,不滿足則跳出循環(huán)电湘。
        ③具體執(zhí)行的語句
        ④循環(huán)后隔节,循環(huán)變量的變化情況
    * c: 注意事項
        do while循環(huán)的使用特點為無論是否滿足條件,均至少會執(zhí)行一次寂呛。
* C: 案例代碼
    public class Demo06While_Dowhile{
        
        public static void main(String[] args) {    
            int i=1;
            while(i<10){
                System.out.println("i love baby!"+i);
                i++;
            }
            
            
            int j=1;
            do{
                System.out.println("i love baby!"+j);
                j++;
            }while(j<10);
        }
    }

09break與continue

* A: break語句
    * a: 作用
            * 跳出所在的循環(huán)體
    * b: 書寫位置
            * 必須出現(xiàn)在循環(huán)或選擇結構內
    * c: 舉例
        for(int i=0; i<10; i++) {
            if(i>5) {
            break;
        }
            System.out.println(“我愛Java”+i);
        }
        //會從0-5輸出6次“我愛Java”
    * d: 案例代碼
        public class  Demo04Break
        {
            public static void main(String[] args) 
            {
                /*
                    打印10次i love java
                */
                for(int i = 0; i<10; i++) {
                    System.out.println("i love java!"+i);

                    if(i==8) {
                        break;
                    }
                }
                System.out.println("我已真愛怎诫!");
            }
        }
* B: break詳細解釋
    * a: 作用
        * 在loop/switch選擇或者循環(huán)過程中,我們總是滿足布爾表達條件才能執(zhí)行對應的代碼贷痪,然而在這些邏輯過程中幻妓,
            可以使用一些關鍵字直接跳出正在執(zhí)行的代碼,去執(zhí)行后邊或者指定位置的代碼劫拢,
            這些關鍵字一旦出現(xiàn)就可以跳轉語句執(zhí)行順序肉津。
    * b: 使用方式
        * 無法單獨使用,必須將break關鍵字置于switch或循環(huán)語句中
    * c: 運行規(guī)律
        * 不需要判斷任何條件尚镰,只要遇到break變直接跳出執(zhí)行后續(xù)代碼阀圾。會完全跳出選擇或者循環(huán)結構
        * 只能跳出最近的代碼塊,不能跨越多級代碼塊
    * d: 案例代碼
    public class Demo07Break{
        public static void main(String[] args) {
            /*
            xiaoY:
            for(int j=0;j<5;j++){
                //使用for循環(huán)狗唉,循環(huán)10次
                for(int i=0; i<10; i++){
                    //每次打印我愛java字符串并且打印當前次數(shù)
                    System.out.println(j+"i love java初烘!"+i);
                    //使用break關鍵字,在第六次打印結束后跳出循環(huán)
                    if(i == 5) {
                        break xiaoY;
                    }
                }
            }
            */
            
            xiaoY:
            for(int j=0;j<5;j++){
                //使用for循環(huán)分俯,循環(huán)10次
                for(int i=0; i<10; i++){

                    //使用break關鍵字肾筐,在第六次打印結束后跳出循環(huán)
                    if(i == 5) {
                        //break xiaoY;
                        //continue;
                        continue xiaoY;
                    }
                    
                    //每次打印我愛java字符串并且打印當前次數(shù)
                    System.out.println(j+"i love java!"+i);
                    //System.out.println("i love java缸剪!"+i);
                }
            }
        
        }
    }
* C:循環(huán)標號
    * a: 為什么使用循環(huán)標號
        * 當在雙層循環(huán)或者循環(huán)內有switch選擇語句時吗铐,我們發(fā)現(xiàn),使用break或者continue所作用的對象均是內層語句杏节,
            無法直接跳出外層循環(huán)唬渗,這時就需要使用標號語句跳轉了
    * b: 使用方式
        * 在外層循環(huán)外的某行前邊,使用后邊跟有冒號”:”的標識符奋渔,即定義完畢镊逝。
            使用時當在內層循環(huán)使用break或continue時后邊緊跟之前定義的標號即可
    * c: 運行規(guī)律
        * 當外層循環(huán)外定義了標號
            內層使用break,終止內外雙層循環(huán)嫉鲸。
            內層使用continue撑蒜,終止內層循環(huán),繼續(xù)外層循環(huán)。
    * d: 案例代碼
        public class Demo09Break3 
        {
            public static void main(String[] args) 
            {

                out:
                for(int i=0; i<10; i++) {
                    for(int j=0; j<5; j++) {
                        System.out.println("i:"+i+" j:"+j);

                        if(j==2){
                            //break out;
                            continue out;
                        }
                    }
                }
            }
        }    
* D: continue介紹
    * a: 作用
        * 提前結束本次循環(huán)座菠,繼續(xù)進行下次循環(huán)
    * b: 使用方式
        * 無法單獨使用狸眼,必須將continue關鍵字置于循環(huán)語句中
    * c:運行規(guī)律
        * 不需要判斷任何條件,只要遇到continue變直接跳出本輪循環(huán)進行下次循環(huán)
    * d:舉例
        for(int i=0; i<10; i++) {
            if(i==5) {
                continue;
        }
            System.out.println(“我愛Java”+i);
        }
        //會從0-4浴滴、6-9輸出9次“我愛Java”
    * e: 案例代碼
        public class Demo08Continue 
        {
            public static void main(String[] args) 
            {
                for(int i=0; i<10; i++) {
                    if(i==5) {
                        continue;
                    }
                    System.out.println("我愛Java"+i);
                }
            }
        }

============================第二階段=======================================
10小票追加需求.avi
11switch.avi
12小票追加需求重構代碼分析.avi
13if重構三元運算符代碼.avi
14打折邏輯實現(xiàn).avi
15選擇與循環(huán)購物實現(xiàn).avi
16購物小票追加需求案例代碼總結.avi

10小票追加需求

* A: 購物小票添加需求
    * a: 新的打折需求(判斷結果并重新為變量賦值)
        * 如果商品總價超過300元拓萌,打95折
        * 如果商品總價超過600元,打9折
        * 如果商品總價超過1000元巡莹,打8折
        * 如果商品總價超過1000元司志,并且少林寺酥餅核桃購買超過30份, 則總價打8折后,立減20
    * b: 操作字符串數(shù)據(jù)
        * 如果商品名稱超過7個字降宅,則截取前7個字加…完成小票商品名
    * c: 使用戶操作輸入數(shù)據(jù)后可重新購買
        * 1: 代表開始購物骂远,每次運行購買次數(shù)不得超過3次,否則直接打印小票
        * 2: 代表結賬(打印小票)
        * 3: 代表不想買了腰根,直接退出

11switch

* A: switch簡介
    * a: 需求分析
        * 上面的新增需求中激才,根據(jù)用戶的不同選擇,完成不同的操作購買额嘿、結賬瘸恼、退出,這樣的話册养,就需要用switch來完成
    * b: 使用格式
        * 根據(jù)一個變量值东帅,對比多個可選值,當變量值匹配到對應可選值時球拦,執(zhí)行該值對應的語句
    * c: switch注意事項
        * 變量可選擇的類型一共六種:byte,short,int,char,String(JDK1.7后),枚舉(JDK1.5后)
    ?    * 如同if語句當中的else靠闭,default不是必須存在的
    ?    * break用來跳出選擇結構,沒有break語句則在某種情況執(zhí)行后坎炼,會忽略剩余case關鍵字愧膀,順序繼續(xù)執(zhí)行剩余代碼
    ?    * 與if語句不同,switch語句只能完成具體值的選擇谣光,而不能指定取值區(qū)間

* B: 案例代碼
    /*
        選擇結構switch:從幾個具體的值當中選擇一個檩淋,執(zhí)行對應值后邊的代碼
        
        格式:如代碼
        
        會在第一次執(zhí)行switch時,對比變量與給定的值是否匹配萄金,匹配后蟀悦,執(zhí)行對應給定值后邊代碼。
        只進行一次匹配氧敢,在第一次匹配后日戈,忽略所有的case
        break可以省略,省略后會直接執(zhí)行后續(xù)代碼
        所有的case沒有順序限制
    */
    public class Demo08Switch{
        public static void main(String[] args) {
            //根據(jù)不同的數(shù)字福稳,打印不同的星期 1-7  一~日
            int number = 3;
            
            switch(number){
                case 1:
                    System.out.println("星期一");
                    break;
                case 2:
                    System.out.println("星期二");
                    break;
                case 4:
                    System.out.println("星期四");
                    break;
                case 3:
                    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;
            }
        }
    }

12小票追加需求重構代碼分析

* A: 小票追加需求重構代碼分析
    * a: 需求分析
    ?    * 使用前兩天內容完成購物小票的基本內容。
    ?    * 判斷結果并重新為變量賦值均是對總價進行不同條件的判斷與賦值
    ?    * 字符串獲取長度并截取字符串判斷的圆,這里使用if語句替代三元運算符,更為靈活越妈。
    ?    * 使用戶操作輸入數(shù)據(jù)后可重新判斷是否重新購買時季俩,使用循環(huán)語句完成,而在此過程中梅掠,我們依據(jù)用戶輸入的1酌住、2、3的過程可是使用switch語句完成阎抒。
    * b: 代碼重構
        * 用更好的方式酪我,將之前寫好的代碼重新寫一遍,加入新的需求
    * c:根據(jù)需求在原有代碼上分析應該添加代碼的地方且叁,標注為TODO的地方為要添加代碼的地方
        /*
            超市管理系統(tǒng)

            基本小票完成后加入業(yè)務邏輯:
                判斷結果并重新為變量賦值
                如果商品總價超過300元都哭,打95折
                如果商品總價超過600元,打9折
                如果商品總價超過1000元逞带,總價打8折
                如果商品總價超過1000元欺矫,并且少林寺酥餅核桃購買超過30份, 則總價打8折后,立減20

                操作字符串數(shù)據(jù)
                如果商品名稱超過7個字展氓,則截取前7個字加…完成小票商品名

                使用戶操作輸入數(shù)據(jù)后可重新購買:
                1代表開始購物 (用戶輸入數(shù)量的過程)
                2代表結賬(打印小票) (打印小票 票頭穆趴,票體,票腳)
                3代表不想買了遇汞,直接退出 (break跳出選擇)
                一次完整的購物邏輯:
                    直接退出
                    購買后...退出
                    購買后...結賬
            隱藏:
                將所有代碼放到循環(huán)中未妹,使多個人可以重復購買
                讓一個用戶,反復購買勺疼,之后結賬或退出購買
            */
            import java.util.Scanner;
            public class Supermarket {
                public static void main(String[] args) {
                    //通過變量打印商品報價單
                    //定義每個商品的變量
                    String slsName = "少林寺酥餅核桃";  //名稱
                    String slsID = "090115";            //編號
                    double slsPrice = 15.5;                //單價
                    String slsUnit = "個";                //單位
                    int slsNumber;                        //數(shù)量
                    double slsMoney;                    //金額
                    
                    String skName = "皇家特供尚康雜糧牡丹餅(復合營養(yǎng)型)";
                    String skID = "090027";
                    double skPrice = 14.5;
                    String skUnit = "個";
                    int skNumber;
                    double skMoney;
                    
                    System.out.println("                        歡迎光臨");
                    System.out.println();
                    System.out.println("商品編號        商品名稱         商品單價     商品計價單位");
                    System.out.println(slsID+"       "+slsName+"       "+slsPrice+"           "+slsUnit);
                    System.out.println(skID+"       "+skName+"       "+skPrice+"           "+skUnit);
                    
                    //讓用戶輸入每種貨物的購買數(shù)量
                    //創(chuàng)建Scanner對象教寂,調用nextInt方法
                    Scanner sc = new Scanner(System.in);
                    //提示用戶輸入
                    System.out.println();
                    System.out.println("請輸入您要購買的"+slsName+"數(shù)量:");
                    //使用用戶輸入的數(shù)量為已有的數(shù)量變量賦值
                    slsNumber = sc.nextInt();
                    slsMoney = slsPrice * slsNumber;
                    System.out.println("請輸入您要購買的"+skName+"數(shù)量:");
                    //使用用戶輸入的數(shù)量為已有的數(shù)量變量賦值
                    skNumber = sc.nextInt();
                    skMoney = skPrice * skNumber;
                    
                    //打印購物小票
                    //票頭
                    //直接字符串常量打印
                    System.out.println("            歡  迎  光  臨    ");
                    System.out.println("        品名            售價     數(shù)量     金額");
                    System.out.println("-------------------------------------------------------");
                    //票體
                    //如果商品名稱超過7個字,就截取前7個字+...
                    //TODO 使用if替換掉三元運算符號的實現(xiàn)
                    int slsNameLenght = slsName.length();
                    slsName = slsNameLenght>7 ? slsName.substring(0,7)+"...":slsName;
                    
                    int skNameLenght = skName.length();
                    skName = skNameLenght>7 ? skName.substring(0,7)+"...":skName;
                    
                    System.out.println(slsName+"("+slsID+")   "+slsPrice+"  *  "+slsNumber+"   =  "+slsMoney);
                    System.out.println(skName+"("+skID+")   "+skPrice+"  *  "+skNumber+"   =  "+skMoney);
                    System.out.println("-------------------------------------------------------");
                    
                    //票腳
                    //計算匯總的變量
                    int totalItemsNumber = 2;  //商品項數(shù)
                    int  totalNumber = slsNumber+skNumber; //商品件數(shù)
                    double totalMoney = slsMoney+skMoney; //商品總金額
                    //判斷總金額和少林寺兩種數(shù)據(jù)是否滿足打折條件执庐,滿足就打折
                    //TODO 打折 
                    double afterTotalMoney = (totalMoney >= 1000&&slsNumber>=30) ? totalMoney*0.9:totalMoney;
                    
                    System.out.println(totalItemsNumber+"項商品   共計:"+totalNumber+"件");
                    //在打印總金額時酪耕,超市顯示四舍五入后的整數(shù),不包含小數(shù)點轨淌,需要用到Math類四舍五入方法迂烁,及強制類型轉換
                    afterTotalMoney = Math.round(afterTotalMoney);
                    System.out.println("總計:"+(int)afterTotalMoney+"元");
                    System.out.println("您真的太幸運了,本次打折活動為您節(jié)省了"+(totalMoney-(int)afterTotalMoney));
                    System.out.println("憑此小票換取發(fā)票");
                    
                }
            }

13if重構三元運算符代碼

* A: if重構三元運算符代碼
    * a: 將"###12小票追加需求重構代碼分析"中案例代碼中的"http://TODO 使用if替換掉三元運算符號的實現(xiàn)"位置后面的以下代碼:
        int slsNameLenght = slsName.length();
        slsName = slsNameLenght>7 ? slsName.substring(0,7)+"...":slsName;
        
        int skNameLenght = skName.length();
        skName = skNameLenght>7 ? skName.substring(0,7)+"...":skName;
        
        替換為:
        
        if(slsName.length() > 7) {
            //截取前7個字递鹉,連接...賦值給slsName
            slsName = slsName.substring(0,7) + "..."; 
        }
            
        if(skName.length() > 7) {
            //截取前7個字盟步,連接...賦值給skName
            skName = skName.substring(0,7) + "..."; 
        }        

14打折邏輯實現(xiàn)

* A: 打折邏輯實現(xiàn)
    * a: 將"###12小票追加需求重構代碼分析"中案例代碼中的"http://TODO 打折邏輯"位置后面的以下代碼:
            double afterTotalMoney = (totalMoney >= 1000&&slsNumber>=30) ? totalMoney*0.9:totalMoney;
        替換為:
            //判斷總金額和少林寺兩種數(shù)據(jù)是否滿足打折條件,滿足就打折
            /*
                如果商品總價超過300元躏结,打95折
                如果商品總價超過600元却盘,打9折
                如果商品總價超過1000元,總價打8折
                如果商品總價超過1000元,并且少林寺酥餅核桃購買超過30份, 則總價打8折后黄橘,立減20
            */
            double afterTotalMoney = totalMoney;
            //滿300打95折
            if(totalMoney>=300&&totalMoney<600) {
                afterTotalMoney = totalMoney*0.95;
            }else if(totalMoney>=600&&totalMoney<1000) {//滿600打9折
                afterTotalMoney = totalMoney*0.9;
            }else if(totalMoney>=1000) {//滿1000打8折
                afterTotalMoney = totalMoney*0.8;
            }
            //滿1000且少林寺超過30兆览,打8折再立減20
            if(totalMoney>=1000&&slsNumber>=30) {
                afterTotalMoney = totalMoney*0.8-20;
            }

15選擇與循環(huán)購物實現(xiàn)

* A: 超市購物小票新增需求分析
    * a: 確定循環(huán)位置
        * 用戶操作輸入數(shù)據(jù)過程為修改變量的過程,而不是定義變量的過程塞关。
           所以抬探,所有定義變量的動作均可以定義在循環(huán)之前。
    * b: 循環(huán)條件
        * 用戶打印小票或者不再購買時跳出帆赢。(一次完整的購物邏輯)
    * c: 循環(huán)體內容
        * 循環(huán)體內包含內容為一個switch選擇小压,根據(jù)用戶選擇結果鳖悠,完成不同的操作邏輯骇笔。
        * 購物邏輯:為變量賦值弛姜,計算次數(shù)
        * 打印小票邏輯:打印小票常量內容與變量值旋炒,一次購物完成
        * 跳出邏輯:跳出循環(huán)反砌,一次購物完成
        * 用戶輸入錯誤邏輯:重新輸入購物清單蛔六,計算次數(shù)
* B: 選擇與循環(huán)購物實現(xiàn)
    /*
        加入了
            通過用戶輸入的不同數(shù)字费奸,判斷用戶的操作
            使用for循環(huán)的方式完成一個用戶一次完整的購買動作
            使用switch語句包雀,完成用戶的不同操作
            1:購買:  購買完畢后跳出switch憋他,讓用戶選擇其他操作
            2:付賬:  付賬完畢后孩饼,一次購買完畢,跳出循環(huán)(完成一次完整的購買動作)
            3:退出:  選擇退出后竹挡,一次購買完畢镀娶,跳出循環(huán)(完成一次完整的購買動作)
        
        的購物小票
    */
    * a: 案例代碼(實現(xiàn)了今天新加的所有需求)

            import java.util.Scanner;
            public class Supermarket {
                public static void main(String[] args) {
                    //通過變量打印商品報價單
                    //定義每個商品的變量
                    String slsName = "少林寺酥餅核桃";  //名稱
                    String slsID = "090115";            //編號
                    double slsPrice = 15.5;                //單價
                    String slsUnit = "個";                //單位
                    int slsNumber = 0;                        //數(shù)量
                    double slsMoney = 0;                    //金額
                    
                    String skName = "皇家特供尚康雜糧牡丹餅(復合營養(yǎng)型)";
                    String skID = "090027";
                    double skPrice = 14.5;
                    String skUnit = "個";
                    int skNumber = 0;
                    double skMoney = 0;
                    
                    //創(chuàng)建Scanner對象,調用nextInt方法
                    Scanner sc = new Scanner(System.in);
                    
                    //將用戶的一次操作放到循環(huán)中循環(huán)執(zhí)行
                    while(true) {
                    
                        //通過switch完成一次完整的購物動作:
                        /*
                            1代表開始購物 (用戶輸入數(shù)量的過程)
                            2代表結賬(打印小票) (打印小票 票頭揪罕,票體梯码,票腳)
                            3代表不想買了,直接退出 (break跳出選擇)
                        */
                        //用戶輸入要做的動作代碼
                        System.out.println();
                        System.out.println("歡迎光臨好啰!");
                        System.out.println("請選擇您的操作:1代表開始購物轩娶、2代表結賬(打印小票)、3直接退出");
                        
                        int choose = sc.nextInt();
                        switch(choose) {
                            case 1: //購物框往,就是為數(shù)量變量賦值
                                //打印商品報價單
                                System.out.println("                        歡迎光臨");
                                System.out.println();
                                System.out.println("商品編號        商品名稱         商品單價     商品計價單位");
                                System.out.println(slsID+"       "+slsName+"       "+slsPrice+"           "+slsUnit);
                                System.out.println(skID+"       "+skName+"       "+skPrice+"           "+skUnit);
                                
                                //讓用戶輸入每種貨物的購買數(shù)量

                                //提示用戶輸入
                                System.out.println();
                                System.out.println("請輸入您要購買的"+slsName+"數(shù)量:");
                                //使用用戶輸入的數(shù)量為已有的數(shù)量變量賦值
                                slsNumber = sc.nextInt();
                                slsMoney = slsPrice * slsNumber;
                                System.out.println("請輸入您要購買的"+skName+"數(shù)量:");
                                //使用用戶輸入的數(shù)量為已有的數(shù)量變量賦值
                                skNumber = sc.nextInt();
                                skMoney = skPrice * skNumber;
                                break;
                                
                            case 2://打印購物小票
                                //票頭
                                //直接字符串常量打印
                                System.out.println("            歡  迎  光  臨    ");
                                System.out.println("        品名            售價     數(shù)量     金額");
                                System.out.println("-------------------------------------------------------");
                                
                                //票體
                                //如果商品名稱超過7個字鳄抒,就截取前7個字+...
                                //使用if替換掉三元運算符的實現(xiàn)
                                //slsName的名字是否超過了7個字
                                if(slsName.length() > 7) {
                                    //截取前7個字,連接...賦值給slsName
                                    slsName = slsName.substring(0,7) + "..."; 
                                }
                                    
                                if(skName.length() > 7) {
                                    //截取前7個字椰弊,連接...賦值給skName
                                    skName = skName.substring(0,7) + "..."; 
                                }
                                
                                System.out.println(slsName+"("+slsID+")   "+slsPrice+"  *  "+slsNumber+"   =  "+slsMoney);
                                System.out.println(skName+"("+skID+")   "+skPrice+"  *  "+skNumber+"   =  "+skMoney);
                                System.out.println("-------------------------------------------------------");
                                
                                //票腳
                                //計算匯總的變量
                                int totalItemsNumber = 2;  //商品項數(shù)
                                int  totalNumber = slsNumber+skNumber; //商品件數(shù)
                                double totalMoney = slsMoney+skMoney; //商品總金額
                                //判斷總金額和少林寺兩種數(shù)據(jù)是否滿足打折條件许溅,滿足就打折
                                /*
                                    如果商品總價超過300元,打95折
                                    如果商品總價超過600元秉版,打9折
                                    如果商品總價超過1000元贤重,總價打8折
                                    如果商品總價超過1000元,并且少林寺酥餅核桃購買超過30份, 則總價打8折后清焕,立減20
                                */
                                double afterTotalMoney = totalMoney;
                                //滿300打95折
                                if(totalMoney>=300&&totalMoney<600) {
                                    afterTotalMoney = totalMoney*0.95;
                                }else if(totalMoney>=600&&totalMoney<1000) {//滿600打9折
                                    afterTotalMoney = totalMoney*0.9;
                                }else if(totalMoney>=1000) {//滿1000打8折
                                    afterTotalMoney = totalMoney*0.8;
                                }
                                //滿1000且少林寺超過30并蝗,打8折再立減20
                                if(totalMoney>=1000&&slsNumber>=30) {
                                    afterTotalMoney = totalMoney*0.8-20;
                                }
                                
                                System.out.println(totalItemsNumber+"項商品   共計:"+totalNumber+"件");
                                //在打印總金額時祭犯,超市顯示四舍五入后的整數(shù),不包含小數(shù)點滚停,需要用到Math類四舍五入方法盹憎,及強制類型轉換
                                afterTotalMoney = Math.round(afterTotalMoney);
                                System.out.println("總計:"+(int)afterTotalMoney+"元");
                                System.out.println("您真的太幸運了,本次打折活動為您節(jié)省了"+(totalMoney-(int)afterTotalMoney));
                                System.out.println("憑此小票換取發(fā)票");
                                
                                //每次結賬后铐刘,將數(shù)據(jù)重置
                                slsNumber = 0;
                                slsMoney = 0;
                                skNumber = 0;
                                skMoney = 0;
                                
                                break;
                            case 3:
                                System.out.println("歡迎下次帶著錢來光臨!");
                                //每次退出后影晓,將數(shù)據(jù)重置
                                slsNumber = 0;
                                slsMoney = 0;
                                skNumber = 0;
                                skMoney = 0;
                                break;
                            default:
                                System.out.println("您輸入的選擇有誤镰吵,請重新輸入");
                        }
                    }
                }
            }

16購物小票追加需求案例代碼總結

* A: 購物小票追加需求案例代碼總結
    * a: 分析今天水果超市案例的代碼流程        

day03.17_總結

  • 把今天的知識點總結一遍。
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末挂签,一起剝皮案震驚了整個濱河市疤祭,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌饵婆,老刑警劉巖勺馆,帶你破解...
    沈念sama閱讀 221,576評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異侨核,居然都是意外死亡草穆,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,515評論 3 399
  • 文/潘曉璐 我一進店門搓译,熙熙樓的掌柜王于貴愁眉苦臉地迎上來悲柱,“玉大人,你說我怎么就攤上這事些己⊥慵Γ” “怎么了?”我有些...
    開封第一講書人閱讀 168,017評論 0 360
  • 文/不壞的土叔 我叫張陵段标,是天一觀的道長涯冠。 經(jīng)常有香客問我,道長逼庞,這世上最難降的妖魔是什么蛇更? 我笑而不...
    開封第一講書人閱讀 59,626評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮赛糟,結果婚禮上械荷,老公的妹妹穿的比我還像新娘。我一直安慰自己虑灰,他們只是感情好吨瞎,可當我...
    茶點故事閱讀 68,625評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著穆咐,像睡著了一般颤诀。 火紅的嫁衣襯著肌膚如雪字旭。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,255評論 1 308
  • 那天崖叫,我揣著相機與錄音遗淳,去河邊找鬼。 笑死心傀,一個胖子當著我的面吹牛屈暗,可吹牛的內容都是我干的。 我是一名探鬼主播脂男,決...
    沈念sama閱讀 40,825評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼养叛,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了宰翅?” 一聲冷哼從身側響起弃甥,我...
    開封第一講書人閱讀 39,729評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎汁讼,沒想到半個月后淆攻,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,271評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡嘿架,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,363評論 3 340
  • 正文 我和宋清朗相戀三年瓶珊,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片耸彪。...
    茶點故事閱讀 40,498評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡艰毒,死狀恐怖,靈堂內的尸體忽然破棺而出搜囱,到底是詐尸還是另有隱情丑瞧,我是刑警寧澤,帶...
    沈念sama閱讀 36,183評論 5 350
  • 正文 年R本政府宣布蜀肘,位于F島的核電站绊汹,受9級特大地震影響,放射性物質發(fā)生泄漏扮宠。R本人自食惡果不足惜西乖,卻給世界環(huán)境...
    茶點故事閱讀 41,867評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望坛增。 院中可真熱鬧获雕,春花似錦、人聲如沸收捣。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,338評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽罢艾。三九已至楣颠,卻和暖如春尽纽,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背童漩。 一陣腳步聲響...
    開封第一講書人閱讀 33,458評論 1 272
  • 我被黑心中介騙來泰國打工弄贿, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人矫膨。 一個月前我還...
    沈念sama閱讀 48,906評論 3 376
  • 正文 我出身青樓差凹,卻偏偏與公主長得像,于是被迫代替她去往敵國和親侧馅。 傳聞我的和親對象是個殘疾皇子危尿,可洞房花燭夜當晚...
    茶點故事閱讀 45,507評論 2 359

推薦閱讀更多精彩內容