Java学习笔记 - 第004天

2016-12-01  本文已影响0人  迷茫o

分支结构

分支结构(选择结构) - switch 开关
case 不加 break 就会一直往下执行,default 不用(因为是最后一个)
x可以用整数、字符、枚举、字符串,只能做等值判断
switch (x)

例子

        Scanner input = new Scanner(System.in);
        System.out.print("请输入月份: ");
        int month = input.nextInt();
        String wordOfMonth;
        // switch - 开关
        // case 不加 break 就会一直往下执行,default 不用(因为是最后一个)
        // 整数、字符、枚举、字符串 只能做等值判断
        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 = "输出错误";
        }
        System.out.println(wordOfMonth);
        input.close();
        Scanner input = new Scanner(System.in);
        System.out.print("请输入: ");
        String yourQuestion = input.nextLine();
        String answer;
        switch (yourQuestion) {
        case "你好":
            answer = "你好啊";
            break;
        case "今天天气怎么样":
            answer = "你自己去看天气预报";
            break;
        case "操你大爷":
        case "滚蛋":
            answer = "请文明用语";
            break;
        default:
            answer = "听不懂";
            break;
        }
        System.out.println("计算机说: " + answer);
        input.close();

练习

//random() -  [0,1)
        int face = (int) (Math.random() * 6 + 1);
        System.out.println("摇出了 " + face + "点" );
        String punishment = "";
        switch (face) { 
        case 1:
            punishment = "喝酒";
            break;
        case 2:
            punishment = "唱歌";
            break;
        case 3:
            punishment = "真心话";
            break;
        case 4:
            punishment = "大冒险";
            break;
        case 5:
            punishment = "脱衣服";
            break;
        case 6:
            punishment = "给钱";
            break;
        /*
         * 方法二:
         * String punishment;
         default:
            punishment = "给钱";
            break;
         */
        }
        System.out.println("你的惩罚是: " + punishment);

循环结构

while 循环

        int i = 1;
        while (i <= 10) {
            System.out.println(i + ". Hello World!");
            i += 1;
        }
        System.out.println("循环结束!");

do-while 循环

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

for 循环 ①; ②;③
①: 初始条件,只在第一次进循环执行一次,以后不会执行
②: 循环条件
③: 循环体最后一条语句,每循环一次执行一次

        for (int i = 1; i <= 10; i++) {
            System.out.println(i + ". Hello World!");           
        }
        System.out.println("循环结束!");

例子

/*      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 管后面的 空语句     ;
     
 /*     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);

练习

        int answer = (int) (Math.random() * 100 + 1);
        int i = 0;
        Scanner input = new Scanner(System.in);
        while (true) {
            System.out.print("猜下数字是多少: ");
            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("猜对了!");
                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("请输入你猜的数字: ");
            thyAnswer = input.nextInt();
            if (thyAnswer > answer) {
                System.out.println("小一点!");
            }
            else if (thyAnswer < answer) {
                System.out.println("大一点!");
            }
            else {
                System.out.println("恭喜你答对了! 你总共猜了" + counter + "次.");
            }
        } while (thyAnswer != answer);
        
        if (counter > 7) {
            System.out.println("智商捉急!!!");
        }
        
        input.close();
/*      Scanner input =new Scanner(System.in);
        System.out.print("请输入一个正整数: ");
        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("输入错误!");
        }
        input.close();

作业

        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 出现的次数: %d,\n2 出现的次数: %d,\n3 出现的次数: %d,\n"
                + "4 出现的次数: %d,\n5 出现的次数: %d,\n6 出现的次数: %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点摇出了 " + f1 + " 次");
        System.out.println("2点摇出了 " + f2 + " 次");
        System.out.println("3点摇出了 " + f3 + " 次");
        System.out.println("4点摇出了 " + f4 + " 次");
        System.out.println("5点摇出了 " + f5 + " 次");
        System.out.println("6点摇出了 " + f6 + " 次");
        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);
            }
        }
        Scanner input = new Scanner(System.in);
        System.out.print("输入两个正整数: ");
        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  + "的最大公约数是:" + 
        greatestCommonDivisor + " ,最大公倍数是: " + leastCommonMultiple);
        input.close();

修正后代码:

        Scanner input = new Scanner(System.in);
        System.out.print("请输入两个数: ");
        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("最大公约数: " + i);
                System.out.println("最小公倍数: " + x * y / i);
                break; // 提前结束循环
            }
        }
        input.close();

晚作业

        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("游戏开始: \n庄家的金钱 : %d 元,玩家的金钱 : %d 元\n",
                    dealerMoney,playerMoney);
            System.out.println("第"+ time +"次摇出" + count +"点");
            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 +"点");
                    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("游戏开始: \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 +"点");
            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 +"点");
                    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游戏现在: \n庄家的金钱 : %d 元,玩家的金钱 : %d 元\n",
                    dealerMoney,playerMoney);
            if(dealerMoney == 0 || playerMoney == 0){
                over = false;
                System.out.println("游戏结束");
            }
        } while (over);

第二次修改代码:

        Scanner input = new Scanner(System.in);

        int dealerMoney = 1000;
        int playerMoney = 1000;
        
        boolean over = true;
        System.out.printf("游戏开始: \n庄家的金钱 : %d 元,玩家的金钱 : %d 元\n",
                dealerMoney,playerMoney);
        do {
            int money;
            do {
                System.out.print("请下注: ");
                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 +"点");
            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 +"点");
                    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游戏现在: \n庄家的金钱 : %d 元,玩家的金钱 : %d 元\n",
                    dealerMoney,playerMoney);
            if(dealerMoney == 0 || playerMoney == 0){
                over = false;
                System.out.println("游戏结束");
            }
        } while (over);
        input.close();
上一篇 下一篇

猜你喜欢

热点阅读