Java复习笔记-04

流程控制语句

  • 流程控制语句

    • 顺序结构
    • 选择结构(分支结构)
      • if语句
      • if
      • if…else
      • if else if else if else if…
    • 循环结构

1 练习

  • 根据用户输入的月份,显示正确的季节 345春天 678夏天 91011秋天 12 1 2 冬天
		Scanner scanner = new Scanner(System.in);
        System.out.println("请输入月份:");
        int month = scanner.nextInt();
        if (month >= 3 && month <= 5){
            System.out.println("浅草才能没马蹄");
        }else if (month >=6 && month <= 8){
            System.out.println("夏天夏天...");
        }else if (month >= 9 && month <= 11){
            System.out.println("我言秋日胜春朝");
        }else if (month == 12 || month == 1 || month == 2){
            System.out.println("梅花香自苦寒来");
        }else {
            System.out.println("您输入的月份有误,别用我的软件");
        }
  • 键盘录入学生成绩,判断学生的等级

90-100 优秀

80-90 好

70 -80 良

60- 70 及格

60以下 希望之星

public static void main(String[] args) {
        /**
         * - 键盘录入学生成绩,判断学生的等级
         * 90-100    优秀
         * 80-90    好
         * 70 -80  良
         * 60- 70 及格
         * 60以下 希望之星
         */
        // 创建
        Scanner scanner = new Scanner(System.in);
        System.out.println("请录入学生成绩:");
        double score = scanner.nextDouble();

        // 根据成绩判断学生等级
        if (score >= 90 && score <= 100){
            System.out.println("学生成绩是优秀");
        }else if (score >= 80 && score < 90){
            System.out.println("学生成绩是好");
        }else if (score >= 70 && score < 80){
            System.out.println("学生成绩是良");
        }else if (score >=60 && score < 70){
            System.out.println("学生成绩是及格");
        }else if (score >=0 && score < 60){
            System.out.println("学生是希望之星");
        }else {
            System.out.println("成绩不合理!!");
        }
    }

2 switch语句

  • 格式
switch(表达式){
    case 目标值1:
         语句体1;
         break;
    case 目标值2:
         语句体2;
         break;
    ...
    case 目标值n:
         语句体n;
         break;
    default:
          语句体n+1;
          break;

}

switch的格式解释:

switch中的表达式的取值可以是:byte,short,int,char 

JDK5之后表达式的取值也可以是枚举

JDK7以后可以放String。

case中放入的是要和表达式进行比较的值。
语句体中可以放多行代码 
public static void main(String[] args) {
        int a = 5;
        switch (a){
            case 1:
                System.out.println("匹配到1");
                break;
            case 2:
                System.out.println("匹配到2");
                break;
            case 3:
                System.out.println("匹配到3");
                break;
            default:
                System.out.println("不是123的数字");
                break;
        }
    }
  • 根据用户输入的数字,输出是周几
public static void main(String[] args) {
        // 根据用户输入的数字,输出是周几
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入1-7的数字:");
        int weekDay = scanner.nextInt();
        switch (weekDay){
            case 1:
                System.out.println("星期一");
                break;
            case 2:
                System.out.println("星期二");
                break;
            case 3:
                System.out.println("星期三");
                break;
            case 4:
                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;
        }
    }

注意事项:

default的break如果是在switch语句的最后一行,可以省略不写,但是不建议省略。

switch中的语句,顺序不影响最终的结果。

case具有穿透效果,如果没有break的影响,那么会一直向下执行。

练习

  • 根据用户输入的月份,显示正确的季节 345春天 678夏天 91011秋天 12 1 2 冬天
public static void main(String[] args) {
        // 根据用户输入的月份,显示正确的季节 345春天  678夏天 91011秋天 12 1 2 冬天
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入月份:");
        int month = scanner.nextInt();
        // shift + alt + 上下
        switch (month){
            case 3:
            case 4:
            case 5:
                System.out.println("春天是成长的季节");
                break;
            case 6:
            case 7:
            case 8:
                System.out.println("夏天夏天悄悄过去,留下小秘密");
                break;
            case 9:
            case 10:
            case 11:
                System.out.println("秋天是收获的季节");
                break;
            case 12:
            case 1:
            case 2:
                System.out.println("冬天是养膘的季节");
                break;
            default:
                System.out.println("没有这个月份");
                break;
        }
    }

3 循环结构

3.1 概述

循环结构可以在满足循环条件的情况下,反复执行某一段代码。这段被重复执行的代码称之为循环体语句

当反复执行这个循环体时,需要在合适的时候把循环判断条件修改为false,从而结束循环。如果一直是true,就会一直执行下去,形成死循环

3.2 循环语句的组成

  • 循环变量的初始化(初始化表达式) 类似于笔墨伺候 初始化表达式只需要执行一次

一条或者多条语句,这些语句完成一些初始化操作

  • 循环出口(布尔表达式)

这是一个boolean表达式,这个表达式能决定是否执行循环体。

  • 循环逻辑内容(循环体)

这个部分是循环体语句,也就是我们要多次执行的代码。

  • 循环增量(步进表达式)

这个部分是在一次循环体结束后,下一次循环判断条件执行前执行,用于控制循环条件中的变量,以在合适时候结束循环。

3.3 循环结构for

  • 格式:
for (初始化表达式1;布尔表达式2;步进表达式4){
     循环体;3
}
  • 执行顺序

1 2 3 4 2 3 4 2 3 4…2 3 4 2

当布尔表达式结果是true时,循环会继续执行。当布尔表达式结果是false时,就会结束循环。

练习:
  • 在控制台输出100次HelloWorld
// 在控制台输出100次HelloWorld
        // 1  2 3  4 2 3 4 2 3 4... 2
        for (int i = 1;i <= 100;i++){
            System.out.println("HelloWorld" + i);
        }
  • 打印输出1-5 和 5-1
        for (int i = 1;i <= 5;i++){
            System.out.println(i);
        }
        for (int i = 5;i >= 1;i--){
            System.out.println(i);
        }
  • 求出1-100之间的偶数和
		// 求出1-100之间的偶数和
        int sum = 0;
        for (int i = 1;i <= 100;i++){
            // 判断i是否是偶数
            if (i % 2 == 0){
                // 偶数
                sum += i;
            }
        }
        System.out.println("偶数和是" + sum);
        for (int i = 2;i <= 100;i+=2){
            sum += i;
        }
        System.out.println("偶数和是" + sum);
  • 统计"水仙花数"共有多少个
    • "水仙花数"是一个三位数,其中个位的立方+十位的立方+百位的立方正好等于其本身。
//        统计"水仙花数"共有多少个
        int count = 0;
        for (int i = 100;i < 1000;i++){
            // 判断三位数是否是水仙花数
            // 获取个位
            int ge = i % 10;
            // 获取十位
            int shi = i / 10 % 10;
            // 获取百位
            int bai = i / 100 % 10;
            int num = ge * ge * ge + shi * shi * shi + bai * bai * bai;
            boolean flag = (num == i);
            if (flag){
                // 水仙花数
                System.out.println("水仙花数是" + i);
                count++;
            }
        }
        System.out.println("水仙花数总共有" + count + "个");
    }

3.4 while循环

  • 格式:
基本格式:
while(布尔表达式){
  循环体语句;
}

扩展格式:
初始化表达式1
while(布尔表达式2){
   循环体3;
   步进表达式4;
}
  • 执行顺序

1 2 3 4 2 3 4 … 2

  • 当布尔表达式的结果是true时,循环继续执行,当布尔表达式的结果是false时,循环结束。
练习:
  • 输出100次HelloWorld
		int i = 1;
        while (i <= 100){
            System.out.println("HelloWorld" + i);
            i++;
        }
  • 求出1-100之间的奇数和
	// 求出1-100的奇数和
        int i = 1;
        int sum = 0;
        while (i <= 100){
            // 判断i是否是奇数
            if (i % 2 != 0){
                sum += i;
                System.out.println(i);
            }
            i++;
        }
        System.out.println("1-100的奇数和是" + sum);

第二种写法

		int i = 1;
        int sum = 0;
        while (i <= 100){
            sum += i;
            i += 2;
        }
        System.out.println("1-100的奇数和是" + sum);
  • 统计水仙花数有多少个
		// 统计水仙花数有多少个
        int i = 100;
        int count = 0;
        while (i < 1000){
            // 获取i的个位十位和百位
            int ge = i % 10;
            int shi = i / 10 % 10;
            int bai = i / 100 % 10;
            int num = (ge * ge * ge + shi * shi * shi + bai * bai * bai);
            if (num == i){
                System.out.println(i);
                count++;
            }
            i++;
        }
        System.out.println("水仙花数总共有" + count + "个");

3.5 do-while循环

  • 格式
初始化表达式1;
do{
   循环体3;
   步进表达式4;
}while(布尔表达式2);
  • 执行顺序

1 3 4 2 3 4 2 3 4 2…2

  • 布尔表达式如果结果是true,那么就继续执行循环,如果是false,就结束循环
练习:
  • 输出打印100次HelloWorld
  • 求出1-100之间的奇数和
		int i = 1;
        int sum = 0;
        do{
            if (i % 2 == 1){
                sum += i;
            }
            i++;
        }while (i <= 100);

        System.out.println("奇数和是" + sum);
		int i = 1;
        int sum = 0;
        do{
            sum += i;
            i += 2;
        }while (i <= 100);

        System.out.println("奇数和是" + sum);
  • 统计水仙花数有多少个
// 统计水仙花数有多少个
        int i = 100;
        int count = 0;
        do {
            // 获取个位十位和百位
            int ge = i % 10;
            int shi = i / 10 % 10;
            int bai = i / 100 % 10;
            // 求个位十位百位的立方和
            int num = ge * ge * ge + shi * shi * shi + bai * bai * bai;
            if (num == i){
                count++;
            }
            i++;
        }while (i < 1000);

        System.out.println("水仙花数总共有" + count + "个");

3.6 三种循环的区别

这三种循环在大部分情况下都可以通用,但是还是有一些小区别:

  • do…while循环至少会执行一次循环体

  • for循环和while循环的小区别:

    • 使用区别:控制条件语句所控制的那个变量,在for循环结束后就已经不能再次访问,在内存中消失。在while循环结束后,内存中依然存在。
    • for循环内存的使用效率更高。
  • 使用推荐:for --while – dowhile

3.7 跳转控制语句

  • 概述
    • 让循环在某一步的时候结束或者跳过某些数据。
    • 在java中提供了2个关键字break和continue来实现跳转控制语句。
  • break(中断)
    • break的应用场景
      • 在选择结构的switch语句中
      • 在循环语句中表示立即结束当前循环
      • 注意:离开使用场景的存在是没有意义的
  • continue(继续)
    • continue的应用场景
      • 只能用在循环语句中
      • 表示跳出当前循环,继续执行下一次循环
      • continue一般都用在for循环中,这样不会影响步进表达式的执行

3.8 死循环

死循环又称为无限循环,也称为永真循环。就是永远不会结束的循环。

        while (true){}
        for (;true;){}
        for (;;){}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值