复习知识点五:判断和循环之if语句的swith.while

目录

swith 语句格式说明

 练习1:

练习2:  

default 的位置和省略

case 穿透

举一反一

 switch 新特性

switch 和 if 第三种格式各自的使用场景

 练习1 :

  练习2 :

 循环

 练习1: 求和

  练习2: 求和

 练习3 :

while 循环的执行流程 

 练习1:

 for  和  whlie  的对比 

练习1:

 练习2 :

练习3:

do...while 循环


swith 语句格式说明

格式

 练习1:

运行即可发现,  如果变量noodles 不同那结果也会不同. 如果变量noodles 不存在,运行结果将是"方便面"  

 

练习2:  

代码运行:

import java.util.Scanner;

public class Test9 {
    public static void main(String[] args) {
        //运动计划
        Scanner sc = new Scanner(System.in);
        System.out.println("请录入星期");
        int week = sc.nextInt();
        //利用switch对星期进行匹配
        switch (week){
            case 1:
                System.out.println("跑步");
                break;
            case 2:
                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 的位置和省略

位置: default 不一定是写在下面的,我们可以写在任意位置,只不过习惯写在最小面

省略: default  可以省略,语法不会有问题,但是不建议省略.

case 穿透

 就是语句体 中没有写break 导致

.执行流程:

  • 首先还是会拿着小括号中表达式的值跟最下面每一个case进行匹配.
  • 如果匹配上了,就会执行对应的语句体,如果此时发现了break,那么将结束整个swith 语句
  • 如果没有发现break, 那么程序会继续执行下一个case 语句体,一直到break或者右大括号为止

使用场景:  如果多个case的语句体重复了,那么我们考虑利用case穿透去简化代码.

 

 

举一反一

 switch 新特性

JDK12 及后面的才可以使用

如果只有运行代码, 大括号可以删除,如下

switch 和 if 第三种格式各自的使用场景

if 第三种格式 : 一般用于对范围的判断

swith第三种格式 : 把有限个数据一一列举出来,让我们任选其一

 

 练习1 :

 

以上的swith语句还可以像下面这种写法

 

  练习2 :

 

 


 循环

 循环的分类 :  for  whlie   do...whlie

 

 练习1: 求和

 ​​​​​

  • 求和的变量不能定义在循环的里面, 因为变量只在所属的大括号中有效
  • 如果我们把变量定义在循环里面,那么当前变量只能在本次循环中有效 
  • 当本次循环结束之后,变量就会从内存中消失
  • 第二次循环开始的时候,又会重新定义一个新的变量
  • 结论:如果以后我们要写累加求和的变量,可以把变量定义在循环的外面

 

  练习2: 求和

 

public class Test15 {
    public static void main(String[] args) {
        //求1~100之间的每个数

        //分析:
        //1. 获取1~100之间的每个数
        int sum = 0;
        for (int i = 1; i <= 100; i++) {
            //2. 累积求和 (先判断,再求和)
           if (i % 2 == 0){
               sum = sum + i;
           }
        }
        //打印sum
        System.out.println(sum);
    }
}

 

 练习3 :

统计满足条件的数字

import java.util.Scanner;

public class Test16 {
    public static void main(String[] args) {
        //分析:
        //1,键盘录入两个数字
        Scanner sc = new Scanner(System.in);
        System.out.println("请录入一个数字表示范围的开始");
        int start = sc.nextInt();
        System.out.println("请录入一个数字表示范围的结束");
        int end = sc.nextInt();

        //统计变量
        //简单理解:统计符合要求的数字的个数
        int count =0;
        //2.利用循环获取这个范围中的每个数字
        //开始条件 start
        //结束条件 end
        for (int i = start; i <= end; i++) {
            //3. 对每一个数字进行判断,统计有多少个满足要求的数字
            if (i % 3 == 0 && i % 5 ==0 ){
                count++;
            }
        }
        System.out.println(count);
    }
}

 

while 循环的执行流程 

 初始化语句只执行一次

判断语句为true ,循环继续

判断语句为false ,循环结束

 练习1:

利用while循环打印1~100

public class ForDemo1 {
    public static void main(String[] args) {
        //whlie 循环打印1~100
        //分析
        //开始条件
        //结束条件

        int i= 1;
        while (i<=100){
            System.out.println(i);
            i++;
        }
    }
}

~~~~~

 for  和  whlie  的对比 

 

练习1:

分析: 

 折叠纸张的厚度都是原先的两倍

循环折叠纸张,只要纸张的厚度小于山峰的高度,那么循环就继续

每折叠一次,统计次数就要++

选择whlie 的理由: 因为我们不知道循环的次数也不知道循环的范围只知道循环的条件,所以用whlie
public class Test17 {
    public static void main(String[] args) {
        //分析:折叠纸张的厚度都是原先的两倍

        //定义一个变量来记录山峰高度
        double height = 8844430;
        //定义一个变量来记录纸张初始厚度
        double paper = 0.1;
        //定义一个变量用来统计折叠次数
        int count = 0;
        //循环折叠纸张,只要纸张的厚度小于山峰的高度,那么循环就继续
        //每折叠一次,统计次数就要++
        //选择whlie 的理由: 因为我们不知道循环的次数也不知道循环的范围只知道循环的条件,所以用whlie
        while (paper < height){
            paper = paper * 2;
            //折叠一次,++一次
            count ++ ;
        }
        //当循环结束后,count 记录的值就是折叠的次数
        System.out.println(count);
    }
}

 

 练习2 :

 

核心思路:把数字倒过来跟原来的数字进行比较
public class Test18 {
    public static void main(String[] args) {
        //核心思路:把数字倒过来跟原来的数字进行比较

        //1, 定义数字
        int x = 12345;
        //定义一个临时变量用于记录x原来的值,用于最后进行比较
        int temp = x;
        //记录倒过来之后的结果
        int num = 0;
        //2. 利用循环开始
        while (x != 0){
            //从右往左获取每一位数字
            int ge = x % 10;
            //修改一下x记录的值(由上句代码可知需要修改代码的值)
            x = x /10;
            //把当前的获取到的数字拼接到最右边
            num = num * 10 + ge;
        }
        //打印
        System.out.println(num);
        System.out.println(x);
        //比较
        System.out.println(num == temp);
    }
}

 

练习3:

public class Test19 {
    public static void main(String[] args) {
         //分析
        // 被除数 / 除数 = 商.....余数

        //定义变量记录被除数
        int dividend = 100;
        //定义变量记录除数
        int divisor = 37;
        //定义一个变量用来统计相减了多少次
        int count = 0;
        //3. 在循环中,不断的用被除数 - 除数
        //只要被除数 是大于除数的, 那么就一直循环
        while (dividend >= divisor){
           dividend = dividend-divisor;
           count ++;
        }
        //当循环结束之后,dividend变量记录的就是余数
        System.out.println("余数为" + dividend);
        //当循环结束之后,count 就是商
        System.out.println("商为"+ count);

    }
}


do...while 循环

先执行后判断

 

猜你喜欢

转载自blog.csdn.net/m0_57448314/article/details/129174348