天天看点

Java基本语法----流程控制(基础练习题)基础练习

Java基本语法----流程控制02

  • 基础练习
    • 1. if-else 练习
    • 2. switch 练习
    • 3. for 循环
    • 4. while 循环
    • 5. do ... while 循环

基础练习

1. if-else 练习

  • 赌数游戏

    提供三个1-6的随机数,作为掷骰子得到的点数。如果各个点数相同,则为豹子。

    如果三个骰子点数和,小于或等于9,则为“小”。

    如果三个骰子点数和,大于9,则为“大”。

    用户随机选择:押大、押小或者押豹子。通过判断,输出客户是否押正确。

public static void main(String[] args){
    while (true){
        Random rand = new Random();
        // 随机生成的三个数a,b,c
        int a = rand.nextInt(6) + 1;
        int b = rand.nextInt(6) + 1;
        int c = rand.nextInt(6) + 1;
        String result;
        Scanner sc = new Scanner(System.in);
        System.out.println("请下注(大/小/豹子):");
        String size = sc.next();

        System.out.println("开出的骰子数分别是:"+ a +","+ b +","+ c);
        int sum = a + b + c; // 3 <= sum <= 18
        if (a == b && b == c){
            result = "豹子";
        }else if (sum <= 9){
            result = "小";
        }else {
            result = "大";
        }

        if (size.equals(result)){
            System.out.println("恭喜你,猜中了!");
			System.out.println("Game Over!");
            break;
        }else {
            System.out.println("很遗憾,没有猜中,再接再厉");
            continue;
        }
    }
}
           
  • 假设你想开发一个玩彩票的游戏,程序随机地产生一个两位数的彩票,提示用户输入 一个两位数,然后按照下面的规则判定用户是否能赢。
    1. 如果用户输入的数匹配彩票的实际顺序,奖金10 000美元。
    2. 如果用户输入的所有数字匹配彩票的所有数字,但顺序不一致,奖金 3 000美元。
    3. 如果用户输入的一个数字仅满足顺序情况下匹配彩票的一个数字,奖金1 000美元。
    4. 如果用户输入的一个数字仅满足非顺序情况下匹配彩票的一个数字,奖金500美元。
    5. 如果用户输入的数字没有匹配任何一个数字,则彩票作废。
public static void main(String[] args){
		/* Math.random() : [0,1) * 90 ->[0,90) + 10 ->[10,100) ->[10,99] */
        int lotteryNum = (int)(Math.random() * 90 + 10); 
//        System.out.println(lotteryNum);
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入第一个数:");
        int num1 = sc.nextInt();

        System.out.println("请输入第二个数:");
        int num2 = sc.nextInt();

        if ((num1*10 + num2) == lotteryNum){
            System.out.println("奖励10000美元");
        }else if (num1 == lotteryNum%10 && num2 == lotteryNum/10 ){
            System.out.println("奖励3000美元");
        }else if (num1 == lotteryNum/10 || num2 == lotteryNum%10){
            System.out.println("奖励1000美元");
        }else if (num1 == lotteryNum%10 || num2 == lotteryNum/10){
            System.out.println("奖励500美元");
        } else {
            System.out.println("很抱歉,你没有中奖!");
        }
        System.out.println("开出的彩票号码为:"+ lotteryNum);
    }
           
  • 编写程序:由键盘输入三个整数分别存入变量num1、num2、num3, 对它们进行排序,并且从小到大输出。
public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入第一个数:");
        int num1 = sc.nextInt();

        System.out.println("请输入第二个数:");
        int num2 = sc.nextInt();

        System.out.println("请输入第三个数:");
        int num3 = sc.nextInt();
        int temp = 0;

        /*
        * 将第一个数跟第二个数进行比较,对他们进行交换位置,将较小的数放在第一位,较大的数放第二位
        * 再将第三个数跟第二个数进行比较,较小者放前面
        * 最后再将第一个数和第二个数进行比较,交换位置
        */
        if (num1 > num2){
            temp = num1;
            num1 = num2;
            num2 = temp;
        }
        if (num2 > num3){
            temp = num2;
            num2 = num3;
            num3 = temp;
        }
        if (num1 > num2){
            temp = num1;
            num1 = num2;
            num2 = temp;
        }
        System.out.println("从小到大输出为:"+ num1 +"--"+ num2 +"--"+ num3);
    }
           

2. switch 练习

  • 使用 switch 把小写类型的 char型转为大写。只转换 a, b, c, d, e. 其它的输 出 “other”。

    提示:String word = scan.next(); char c = word.charAt(0);

public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("输入你想转换的小写类型:");
        String word = sc.next();
        char c = word.charAt(0);
        switch (c){
            case 'a':
                System.out.println("A");
                break;
            case 'b':
                System.out.println("B");
                break;
            case 'c':
                System.out.println("C");
                break;
            case 'd':
                System.out.println("D");
                break;
            case 'e':
                System.out.println("E");
                break;
            default:
                System.out.println("other");
                break;
        }
    }
           
  • 编写程序:从键盘上读入一个学生成绩,存放在变量score中,根据score的值输出其对应的成绩等级:

    score>=90 等级:A

    70=<score<90 等级:B

    60=<score<70 等级:C

    score<60 等级:D

public static void main(String[] args){
    while (true){
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入成绩:");
        double score = sc.nextDouble();
        int grade = (int) (score/10);
        if (score < 0 || score > 100){
            System.out.println("成绩输入有误,请重新输入!");
            continue;
        }else {
            switch (grade){
                case 10:
                case 9:
                    System.out.println("等级为A");
                    break;
                case 8:
                case 7:
                    System.out.println("等级为B");
                    break;
                case 6:
                    System.out.println("等级为C");
                    break;
                case 5:
                case 4:
                case 3:
                case 2:
                case 1:
                case 0:
                    System.out.println("等级为D");
                    break;
            }
        }
    }
}
           

3. for 循环

  • 打印如下的图形:三角形
    *
    * * *
    * * * * *
    * * * * * * *
    * * * * *
    * * *
    *
               
public static void main(String[] args){
        for (int i = 1; i <= 13; i++) {
            if (i < 9){
                for (int j = 1; j <= i; j++) {
                    if (i%2 != 0){
                        System.out.print("* ");
                    }
                }
                System.out.println();
            }else {
                for (int k = 1;k<=14-i;k++){
                    if (i%2 != 0){
                        System.out.print("* ");
                    }
                }
                System.out.println();
            }
        }
    }
           
  • 打印1~100之间所有奇数的和
  • 打印1~100之间所有是7的倍数的整数的个数及总和(体会设置计数 器的思想)
  • 输出所有的水仙花数,所谓水仙花数是指一个3位数,其各个位上数 字立方和等于其本身。 例如: 153 = 111 + 333 + 555
public static void main(String[] args){
        /*打印1-100之间所有的奇数和*/
        int sum = 0;
        for (int i = 1;i <= 100;i++){
            if (i%2 != 0){
                sum += i;
            }
        }
        System.out.println("奇数和为:"+ sum);

        /*打印1~100之间所有是7的倍数的整数的个数及总和*/
        int sum1 = 0;
        int count = 0;
        for (int i = 1;i<=100;i++){
            if (i%7 == 0){
                sum1 += i;
                count++;
            }
        }
        System.out.println("总和:"+ sum1);
        System.out.println("个数:"+ count);

        /*输出所有的水仙花数,所谓水仙花数是指一个3位数,其各个位上数 字立方和等于其本身。
        例如: 153 = 1*1*1 + 3*3*3 + 5*5*5*/
        System.out.println("所有水仙花的值分别是:");
        for (int i = 100;i<1000;i++){
            int a = i/100;
            int b = i/10%10;
            int c = i%10;
            if ((a*a*a + b*b*b + c*c*c) == i){
                System.out.println(i);
            }
        }
    }
           

效果截图:

Java基本语法----流程控制(基础练习题)基础练习

4. while 循环

  • 随机生成一个100以内的数,猜数字游戏:

    从键盘输入数,如果大了提示,大了,如果小了,提示小了,如果对了,就不再猜了,并统计一共猜了多少次?

public static void main(String[] args){
    Random rand = new Random();
    int result = rand.nextInt(100);
    System.out.println(result);
    int count = 0;
    while (true){
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入你猜的数:");
        int num = sc.nextInt();

        if (num > result){
            System.out.println("猜大了,再猜");
            count++;
            continue;
        }else if (num < result){
            System.out.println("猜小了,再猜");
            count++;
            continue;
        }else {
            System.out.println("恭喜你,猜对了");
            count++;
            break;
        }
    }
    System.out.println("一个猜了"+ count +"次");
}
           
  • 从键盘读入个数不确定的整数,并判断读入的正数和负数的个数,输入 为0时结束程序
public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个整数:");

        int posNum = 0; // 统计正数的个数
        int negNum = 0; // 统计负数的个数
        while (true){
            int num = sc.nextInt();
            if (num > 0){
                posNum++;
            }else if (num < 0){
                negNum++;
            }else
                break;
        }
        System.out.println("正数的个数为:"+ posNum);
        System.out.println("负数的个数为:"+ negNum);
}
           

5. do … while 循环

  • 山上有一口缸可以装50升水,现在有15升水。老和尚叫小和尚下山挑水,每次可以挑5升。问:小和尚要挑几次水才可以把水缸挑满?
public static void main(String[] args){
    int water = 15;
    int l = 0;
    do {
        water += 5;
        l++;
    }while (water < 50);
    System.out.println(l +"次,才能挑满水");
}