Java學(xué)習(xí)筆記 - 第004天

分支結(jié)構(gòu)

分支結(jié)構(gòu)(選擇結(jié)構(gòu)) - switch 開(kāi)關(guān)
case 不加 break 就會(huì)一直往下執(zhí)行囚霸,default 不用(因?yàn)槭亲詈笠粋€(gè))
x可以用整數(shù)、字符激才、枚舉邮辽、字符串,只能做等值判斷
switch (x)

例子

  • 1. 輸入1-12的數(shù)字代表月份 輸出對(duì)應(yīng)的英文單詞
        Scanner input = new Scanner(System.in);
        System.out.print("請(qǐng)輸入月份: ");
        int month = input.nextInt();
        String wordOfMonth;
        // switch - 開(kāi)關(guān)
        // case 不加 break 就會(huì)一直往下執(zhí)行贸营,default 不用(因?yàn)槭亲詈笠粋€(gè))
        // 整數(shù)吨述、字符、枚舉钞脂、字符串 只能做等值判斷
        switch (month) {
        case 1: wordOfMonth = "January"; break;
        case 2: wordOfMonth = "February"; break; 
        case 3: wordOfMonth = "March"; break;
        case 4: wordOfMonth = "April"; break;
        case 5: wordOfMonth = "May"; break;
        case 6: wordOfMonth = "June"; break;
        case 7: wordOfMonth = "July"; break;
        case 8: wordOfMonth = "August"; break;
        case 9: wordOfMonth = "September"; break;
        case 10: wordOfMonth = "October"; break;
        case 11: wordOfMonth = "November"; break;
        case 12: wordOfMonth = "December"; break;
        default: wordOfMonth = "輸出錯(cuò)誤";
        }
        System.out.println(wordOfMonth);
        input.close();
  • 2. 自動(dòng)問(wèn)答機(jī)器人
        Scanner input = new Scanner(System.in);
        System.out.print("請(qǐng)輸入: ");
        String yourQuestion = input.nextLine();
        String answer;
        switch (yourQuestion) {
        case "你好":
            answer = "你好啊";
            break;
        case "今天天氣怎么樣":
            answer = "你自己去看天氣預(yù)報(bào)";
            break;
        case "操你大爺":
        case "滾蛋":
            answer = "請(qǐng)文明用語(yǔ)";
            break;
        default:
            answer = "聽(tīng)不懂";
            break;
        }
        System.out.println("計(jì)算機(jī)說(shuō): " + answer);
        input.close();

練習(xí)

  • 1.搖骰子決定懲罰方式
//random() -  [0,1)
        int face = (int) (Math.random() * 6 + 1);
        System.out.println("搖出了 " + face + "點(diǎn)" );
        String punishment = "";
        switch (face) { 
        case 1:
            punishment = "喝酒";
            break;
        case 2:
            punishment = "唱歌";
            break;
        case 3:
            punishment = "真心話";
            break;
        case 4:
            punishment = "大冒險(xiǎn)";
            break;
        case 5:
            punishment = "脫衣服";
            break;
        case 6:
            punishment = "給錢";
            break;
        /*
         * 方法二:
         * String punishment;
         default:
            punishment = "給錢";
            break;
         */
        }
        System.out.println("你的懲罰是: " + punishment);

循環(huán)結(jié)構(gòu)

while 循環(huán)

        int i = 1;
        while (i <= 10) {
            System.out.println(i + ". Hello World!");
            i += 1;
        }
        System.out.println("循環(huán)結(jié)束揣云!");

do-while 循環(huán)

        int i = 0;
        do {
            System.out.println(i + ". Hello World!");
            i += 1;
        } while (i < 10);

for 循環(huán) ①; ②;③
①: 初始條件,只在第一次進(jìn)循環(huán)執(zhí)行一次冰啃,以后不會(huì)執(zhí)行
②: 循環(huán)條件
③: 循環(huán)體最后一條語(yǔ)句邓夕,每循環(huán)一次執(zhí)行一次

        for (int i = 1; i <= 10; i++) {
            System.out.println(i + ". Hello World!");           
        }
        System.out.println("循環(huán)結(jié)束!");

例子

  • 1.1-100求和
/*      int sum = 0;
        int i = 1;
        while (i <= 100) {
            if (i % 5 == 0 || i % 3 == 0 || i % 7 == 0) {
                sum += i;
            }
            i += 1;
        }*/
    
         // while () ;   
         // while 管后面的 空語(yǔ)句     ;
     
 /*     int sum = 0;
        int i = 1;
        do {
            sum += i;
            i += 1;
        } while (i<=100);
        */
        
        int sum = 0;
        for (int i = 1; i <= 100; i++) {
            sum += i;
        }
        System.out.println(sum);

練習(xí)

  • 1.計(jì)算機(jī)出一個(gè)1~100隨機(jī)數(shù)阎毅,猜計(jì)算機(jī)出的數(shù)是什么焚刚,猜大 提示 猜大了。扇调。矿咕。。猜對(duì)了 提示 猜對(duì)了,猜錯(cuò) 7次 提示 智商捉急
        int answer = (int) (Math.random() * 100 + 1);
        int i = 0;
        Scanner input = new Scanner(System.in);
        while (true) {
            System.out.print("猜下數(shù)字是多少: ");
            int num = input.nextInt();
            i += 1;
/*          if (i == 7) {
                System.out.println("你智商真捉急!");
            }*/
            if (num < answer) {
                System.out.println("猜小了!");
            }
            else if (num > answer) {
                System.out.println("猜大了!");
            }
            else {
                System.out.println("猜對(duì)了!");
                if (i <= 3) {
                    System.out.println("你真厲害!");
                }
                else if (i >= 7){
                    System.out.println("你智商真捉急!");
                }
                input.close();
                break;
            }
        }

修正后代碼:

        Scanner input = new Scanner(System.in);
        int answer = (int) (Math.random() * 100 + 1);
        int thyAnswer;
        int counter = 0;
        do {
            counter += 1;
            System.out.print("請(qǐng)輸入你猜的數(shù)字: ");
            thyAnswer = input.nextInt();
            if (thyAnswer > answer) {
                System.out.println("小一點(diǎn)!");
            }
            else if (thyAnswer < answer) {
                System.out.println("大一點(diǎn)!");
            }
            else {
                System.out.println("恭喜你答對(duì)了! 你總共猜了" + counter + "次.");
            }
        } while (thyAnswer != answer);
        
        if (counter > 7) {
            System.out.println("智商捉急!!!");
        }
        
        input.close();
  • 2.n! = n * (n - 1) * (n - 2) ··· 3 * 2 * 1
/*      Scanner input =new Scanner(System.in);
        System.out.print("請(qǐng)輸入一個(gè)正整數(shù): ");
        int num = input.nextInt();
        int result = 1;
        for (int i = num; i >= 1; i--) {
            result *= i; 
        }
        System.out.println(num + "! = " + result);
        input.close();*/
        
        Scanner input = new Scanner(System.in);
        System.out.print("n = ");
        int n = input.nextInt();
        if (n >= 0) {
            double result = 1;
            for (int i = 2; i <= n; i++) {
                result *= i;
            }
            System.out.println(n + "! = " + result);
        }
        else {
            System.err.println("輸入錯(cuò)誤碳柱!");
        }
        input.close();

作業(yè)

  • 1.把一顆骰子 搖6W次捡絮,統(tǒng)計(jì)每一面出現(xiàn)的次數(shù)
        int face = 0;
        int oneSum = 0;
        int twoSum = 0;
        int threeSum = 0;
        int fourSum = 0;
        int fiveSum = 0;
        int sixSum = 0;
        for (int i = 0; i < 60000; i++) {
            face = (int) (Math.random() * 6 + 1);
            switch (face) {
            case 1:
                oneSum += 1;
                break;
            case 2:
                twoSum += 1;
                break;
            case 3:
                threeSum += 1;
                break;
            case 4:
                fourSum += 1;
                break;
            case 5:
                fiveSum += 1;
                break;
            case 6:
                sixSum += 1;
                break;
            }
        }
        System.out.printf("1 出現(xiàn)的次數(shù): %d,\n2 出現(xiàn)的次數(shù): %d,\n3 出現(xiàn)的次數(shù): %d,\n"
                + "4 出現(xiàn)的次數(shù): %d,\n5 出現(xiàn)的次數(shù): %d,\n6 出現(xiàn)的次數(shù): %d",oneSum,twoSum,threeSum,
                fourSum,fiveSum,sixSum);

修正后代碼:

        int f1 = 0, f2 = 0, f3 = 0, f4 = 0, f5 = 0, f6 = 0;
        // f1 = f2 = f3 = f4 = f5 = f6 = 0;
        for (int i = 0; i < 60000; i++) {
            int face = (int) (Math.random() * 6 + 1);
            switch (face) {
            case 1: f1 += 1; break;
            case 2: f2 += 1; break;
            case 3: f3 += 1; break;
            case 4: f4 += 1; break;
            case 5: f5 += 1; break;
            case 6: f6 += 1; break;
            }
        }
        System.out.println("1點(diǎn)搖出了 " + f1 + " 次");
        System.out.println("2點(diǎn)搖出了 " + f2 + " 次");
        System.out.println("3點(diǎn)搖出了 " + f3 + " 次");
        System.out.println("4點(diǎn)搖出了 " + f4 + " 次");
        System.out.println("5點(diǎn)搖出了 " + f5 + " 次");
        System.out.println("6點(diǎn)搖出了 " + f6 + " 次");
  • 2.找出100 ~ 999之間水仙花數(shù) 153 = 13+53+3^3
        int bit = 0;
        int ten = 0;
        int hundreds = 0;
        int sum;
        for (int i = 100; i <= 999; i++) {
            bit = i % 10;
            ten = i / 10 % 10;
            hundreds = i / 100 ;
            sum = bit * bit * bit + ten * ten * ten + hundreds * hundreds * hundreds;
            if (i == sum) {
                System.out.println(i);
            }
        }

修正后代碼:

        for (int i = 100; i < 999; i++) {
            int bw = i / 100;
            int sw = i / 10 % 10;
            int gw = i % 10;
            if (i == bw * bw * bw + sw * sw * sw + gw * gw * gw) {
                System.out.println(i);
            }
        }
  • 3.輸入兩個(gè)正整數(shù) 求最大公約數(shù)和最小公倍數(shù)
        Scanner input = new Scanner(System.in);
        System.out.print("輸入兩個(gè)正整數(shù): ");
        int a = input.nextInt();
        int b = input.nextInt();
        int min = a < b ? a : b;
        int max = a > b ? a : b;
        int greatestCommonDivisor = 0;
        int leastCommonMultiple = 0;
        for (int i = min; i >= 1; i--) {
            if (a % i == 0 && b % i == 0) {
                greatestCommonDivisor = i;
                break;
            }
        }
        for (int i = max; i < a * b; i++) {
            if (i % a == 0 && i % b == 0) {
                leastCommonMultiple = i;
                break;
            }
        }
        System.out.println(a + "和" + b  + "的最大公約數(shù)是:" + 
        greatestCommonDivisor + " ,最大公倍數(shù)是: " + leastCommonMultiple);
        input.close();

修正后代碼:

        Scanner input = new Scanner(System.in);
        System.out.print("請(qǐng)輸入兩個(gè)數(shù): ");
        int x = input.nextInt();
        int y = input.nextInt();
        for (int i = x < y ? x : y; i >= 1; i--) {
            if (x % i == 0 && y % i == 0) {
                System.out.println("最大公約數(shù): " + i);
                System.out.println("最小公倍數(shù): " + x * y / i);
                break; // 提前結(jié)束循環(huán)
            }
        }
        input.close();

晚作業(yè)

  • **1.Craps賭博游戲 - **
    **兩顆色子 - **
    **第一次: **
    玩家搖出 7 和11 玩家勝
    2 3 或12 莊家勝
    其他點(diǎn)數(shù) 游戲繼續(xù)
    玩家再搖
    如果搖出7點(diǎn) 莊家勝
    如果搖出了第一次的點(diǎn)數(shù) 玩家勝
    其他情況 游戲繼續(xù)
    首次編寫(xiě):
        int dealerMoney = 1000;
        int playerMoney = 1000;
        int face1 = (int) (Math.random() * 6 + 1);
        int face2 = (int) (Math.random() * 6 + 1);
        int count = face1 + face2;
        int time = 1;
        boolean victory = true;
        do {
            System.out.printf("游戲開(kāi)始: \n莊家的金錢 : %d 元,玩家的金錢 : %d 元\n",
                    dealerMoney,playerMoney);
            System.out.println("第"+ time +"次搖出" + count +"點(diǎn)");
            if (count == 7 || count == 11) {
                victory = false;
                System.out.println("玩家獲勝!");
            }
            else if(count == 2 || count == 3 || count == 12) {
                victory =false;
                System.out.println("莊家獲勝!");
            }
            else {
                do {
                    face1 = (int) (Math.random() * 6 + 1);
                    face2 = (int) (Math.random() * 6 + 1);
                    int count2 = face1 + face2;
                    time += 1;
                    System.out.println("第"+ time +"次搖出" + count2 +"點(diǎn)");
                    if (count2 == 7) {
                        victory = false;
                        System.out.println("莊家獲勝!");
                    }
                    else if (count2 == count) {
                        victory = false;
                        System.out.println("玩家獲勝!");
                    }
                } while (victory);
            }
        } while (victory);

第一次修改代碼:

        int dealerMoney = 1000;
        int playerMoney = 1000;
        
        boolean over = true;
        System.out.printf("游戲開(kāi)始: \n莊家的金錢 : %d 元,玩家的金錢 : %d 元\n",
                dealerMoney,playerMoney);
        do {
            int face1 = (int) (Math.random() * 6 + 1);
            int face2 = (int) (Math.random() * 6 + 1);
            int count = face1 + face2;
            int time = 1;
            
            System.out.println("第"+ time +"次搖出" + count +"點(diǎn)");
            if (count == 7 || count == 11) {
                System.out.println("玩家獲勝!");
                playerMoney += 100;
                dealerMoney -= 100;
            }
            else if(count == 2 || count == 3 || count == 12) {
                System.out.println("莊家獲勝!");
                playerMoney -= 100;
                dealerMoney += 100;
            }
            else {
                boolean victory = true;
                do {
                    face1 = (int) (Math.random() * 6 + 1);
                    face2 = (int) (Math.random() * 6 + 1);
                    int count2 = face1 + face2;
                    time += 1;
                    System.out.println("第"+ time +"次搖出" + count2 +"點(diǎn)");
                    if (count2 == 7) {
                        victory = false;
                        System.out.println("莊家獲勝!");
                        playerMoney -= 100;
                        dealerMoney += 100;
                    }
                    else if (count2 == count) {
                        victory = false;
                        System.out.println("玩家獲勝!");
                        playerMoney += 100;
                        dealerMoney -= 100;
                    }
                } while (victory);
            }
            System.out.printf("\n游戲現(xiàn)在: \n莊家的金錢 : %d 元,玩家的金錢 : %d 元\n",
                    dealerMoney,playerMoney);
            if(dealerMoney == 0 || playerMoney == 0){
                over = false;
                System.out.println("游戲結(jié)束");
            }
        } while (over);

第二次修改代碼:

        Scanner input = new Scanner(System.in);

        int dealerMoney = 1000;
        int playerMoney = 1000;
        
        boolean over = true;
        System.out.printf("游戲開(kāi)始: \n莊家的金錢 : %d 元,玩家的金錢 : %d 元\n",
                dealerMoney,playerMoney);
        do {
            int money;
            do {
                System.out.print("請(qǐng)下注: ");
                int inMoney = input.nextInt();
                if (playerMoney - inMoney > 0 && dealerMoney - inMoney > 0) {
                    money = inMoney;
                }
                else {
                    System.out.println("下注金額超出雙方某一方的剩余金額莲镣!");
                    money = 0;
                }
            } while (money == 0);
            
            int face1 = (int) (Math.random() * 6 + 1);
            int face2 = (int) (Math.random() * 6 + 1);
            int count = face1 + face2;
            int time = 1;
            
            System.out.println("第"+ time +"次搖出" + count +"點(diǎn)");
            if (count == 7 || count == 11) {
                System.out.println("玩家獲勝!");
                playerMoney += money;
                dealerMoney -= money;
            }
            else if(count == 2 || count == 3 || count == 12) {
                System.out.println("莊家獲勝!");
                playerMoney -= money;
                dealerMoney += money;
            }
            else {
                boolean victory = true;
                do {
                    face1 = (int) (Math.random() * 6 + 1);
                    face2 = (int) (Math.random() * 6 + 1);
                    int count2 = face1 + face2;
                    time += 1;
                    System.out.println("第"+ time +"次搖出" + count2 +"點(diǎn)");
                    if (count2 == 7) {
                        victory = false;
                        System.out.println("莊家獲勝!");
                        playerMoney -= money;
                        dealerMoney += money;
                    }
                    else if (count2 == count) {
                        victory = false;
                        System.out.println("玩家獲勝!");
                        playerMoney += money;
                        dealerMoney -= money;
                    }
                } while (victory);
            }
            System.out.printf("\n游戲現(xiàn)在: \n莊家的金錢 : %d 元,玩家的金錢 : %d 元\n",
                    dealerMoney,playerMoney);
            if(dealerMoney == 0 || playerMoney == 0){
                over = false;
                System.out.println("游戲結(jié)束");
            }
        } while (over);
        input.close();
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末福稳,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子瑞侮,更是在濱河造成了極大的恐慌的圆,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,907評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件半火,死亡現(xiàn)場(chǎng)離奇詭異略板,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)慈缔,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,987評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)叮称,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人藐鹤,你說(shuō)我怎么就攤上這事瓤檐。” “怎么了挠蛉?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,298評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵谴古,是天一觀的道長(zhǎng)稠歉。 經(jīng)常有香客問(wèn)我,道長(zhǎng)带饱,這世上最難降的妖魔是什么勺疼? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,586評(píng)論 1 293
  • 正文 為了忘掉前任执庐,我火速辦了婚禮导梆,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘猿诸。我一直安慰自己梳虽,他們只是感情好灾茁,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,633評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布禀挫。 她就那樣靜靜地躺著拓颓,像睡著了一般。 火紅的嫁衣襯著肌膚如雪砰左。 梳的紋絲不亂的頭發(fā)上缠导,一...
    開(kāi)封第一講書(shū)人閱讀 51,488評(píng)論 1 302
  • 那天僻造,我揣著相機(jī)與錄音孩饼,去河邊找鬼镀娶。 笑死汽畴,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的鲁猩。 我是一名探鬼主播廓握,決...
    沈念sama閱讀 40,275評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼男应!你這毒婦竟也來(lái)了娱仔?” 一聲冷哼從身側(cè)響起牲迫,我...
    開(kāi)封第一講書(shū)人閱讀 39,176評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤盹憎,失蹤者是張志新(化名)和其女友劉穎陪每,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體挂签,經(jīng)...
    沈念sama閱讀 45,619評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡锌订,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,819評(píng)論 3 336
  • 正文 我和宋清朗相戀三年啦辐,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了蜈项。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片紧卒。...
    茶點(diǎn)故事閱讀 39,932評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡跑芳,死狀恐怖博个,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情往堡,我是刑警寧澤,帶...
    沈念sama閱讀 35,655評(píng)論 5 346
  • 正文 年R本政府宣布吨瞎,位于F島的核電站颤诀,受9級(jí)特大地震影響着绊,放射性物質(zhì)發(fā)生泄漏熟尉。R本人自食惡果不足惜斤儿,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,265評(píng)論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望陕贮。 院中可真熱鬧,春花似錦肮之、人聲如沸戈擒。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,871評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至稽屏,卻和暖如春诫欠,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背轿偎。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,994評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留嫁乘,地道東北人蜓斧。 一個(gè)月前我還...
    沈念sama閱讀 48,095評(píng)論 3 370
  • 正文 我出身青樓看疙,卻偏偏與公主長(zhǎng)得像能庆,于是被迫代替她去往敵國(guó)和親搁胆。 傳聞我的和親對(duì)象是個(gè)殘疾皇子渠旁,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,884評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容