Switch选择结构和While do-while循环

一、Switch选择结构

1.语法结构:
                  switch(表达式){
                  case 常量1:
                      //代码块1;
                     break;
                 case 常量2:
                      //代码块2;
                     break;
                 ......
                 case 常量n:
                     //代码块n;
                     break;
                 default:
                     //代码块m;
              }
2.执行规律:
              根据switch中()里表达式的值,来匹配case后面的常量值,匹配上哪一个常量值,就执行对应的代码块,执行完代码块后;
              执行break,退出整个switch选择结构,如果表达式的值与所有的case常量值都不匹配,则执行default语句中的代码块,然后执行break结束整个switch选择结构。
      
3.注意:
              1)表达式的值可以是int、short、byte、char、枚举类型、String。
              2)case常量值不能重复。
              3)break的作用是结束整个switch结构,如果省略了,代码会继续向下执行,直到遇到break,或者执行到了default语句后结束整个switch选择结构。
                  这个现象称之为“case穿透”,这个case穿透可以合理使用。
              4)default语句是在表达式的与所有的case常量值不匹配的时候执行,可以省略。
                  default语句可以写在switch选择结构中的任意位置,一般写在switch选择结构的末尾。

case穿透的一个合理应用:

        /*
         * 需求:根据你输入的月份,在控制台输出这个月份属于哪个季节
         * 
         *  12 1 2 冬季 3 4 5 春季 6 7 8 夏季 9 10 11 秋季
         */

        Scanner sc = new Scanner(System.in);

        System.out.println("请输入月份:");

        int month = sc.nextInt();

        switch (month) {
        case 12:
            // System.out.println("冬季");
            // break;
        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;
        case 8:
            System.out.println("夏季");
            break;
        case 9:
//            System.out.println("秋季");
//            break;
        case 10:
//            System.out.println("秋季");
//            break;
        case 11:
            System.out.println("秋季");
            break;
        default:
            System.out.println("月份输入错误");
            break;
        }

二、while循环结构

1. 语法结构:
              初始值;
              while(循环条件){
                  //循环操作代码块;
                  //迭代部分
              }
     
2.执行规律:
          首先执行1次初始值代码;
          然后判断循环条件,如果循环条件为true,执行{}中的循环操作代码块,然后执行迭代部分,再返回判断循环条件,根据循环条件成立与否决定是否执行{}里的代码;
          如果循环条件为false,则结束整个循环结构,继续往下执行循环结构后面的代码。
      
3. 注意事项:    
          1)循环条件不管多么简单,多么复杂,只能是布尔值,要么为true,要么为false。
          2)迭代部分的作用是改变循环条件,让循环条件在某个时刻不再满足,从而退出循环操作 ,如果没有迭代部分,就会进入死循环。
          3)如果第一次判断循环条件,循环条件就不成立,那么循环操作一次都不会执行。

示例1:

public static void main(String[] args) {
        //输出1-100之间的所有偶数
        
        int i =1;
        
        while(i<=100){
            //在输出i之前,需要对i进行判断,如果i是偶数,就输出,如果不是偶数,就不输出
            if(i%2==0){
                System.out.println(i);
            }
            
            i++;
        }

    }

示例2:

public static void main(String[] args) {
        // 输出1-100之间所有整数之和

        int i = 1;

        // 声明一个变量sum用来累加i的值
        int sum = 0;

        while (i <= 100) {
            // 循环操作:i每变化1次,就讲i的值累加到一个变量中
            // sum=sum+i;
            sum += i;
            i++;
        }

        System.out.println("1-100之间所有数之和:" + sum);
    }

三、do-while循环结构

1.语法结构:
              初始值;
              do{
                  //循环操作代码块
                  //迭代部分
              }while(循环条件);
      
2.执行规律:

              先执行1次初始值代码;
              然后进入do-while循环{}中执行循环操作代码块,执行迭代部分,执行完判断循环条件,如果条件为true,再次执行循环操作代码和迭代部分;
              如果循环条件为false,则结束整个do-while循环结构,继续往下执行do-while循环结构之后的代码。
3.注意:
            1)初始值只执行1遍。
            2)do-while循环是先执行1次循环操作,再判断循环条件,所以,如果第1次判断循环条件不成立,循环操作也会执行1次,也就是说do-while循环的循环操作不管在什么情况下,至少会执行1次。
            3)循环条件不管多么复杂或者多么简单,循环条件都是布尔值,要么为true要么为false。

public static void main(String[] args) {
        /*
         * 经过几天的学习,老师给张浩一道测试题,让他先上机编写程序完成,然后老师检查是否合格。
         * 
         * 如果不合格,则继续编写…… 
         */
        
        Scanner sc = new Scanner(System.in);
        //初始值,只是在这个地方没有赋予初始值,因为一开始用不上初始值
        String answer;
        do{
            System.out.println("上机编程,开始写题目....");
            
            System.out.println("编程练习是否合格(合格/不合格)?");
            answer =sc.next();
        }while(answer.equals("不合格"));
        
        System.out.println("继续努力");

    }

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

豪仔思密达

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值