• JAVA中选择语句和循环


    流程控制

    概述

    在一个程序执行的过程中,各条语句的执行顺序对程序的结果是有直接影响的。也就是说,程序的流程对运行结果有直接的影响。所以,我们必须清除每条语句的执行流程。而且,很多时候我们要通过控制语句的执行顺序来实现我们要完成的功能。

    顺序结构

    public static void main(String[] args) {
            System.out.println(1);
            System.out.println(2);
            System.out.println(3);
     }
    

    判断语句--if(选择结构)

    执行流程:
    首先判断关系表达式看其结果是yrue还是false
    如果是true就执行语句体
    如果是false就不执行语句体
    public static void main(String[] args) {
            System.out.println("开始");
            //定义两个变量
            int a = 10;
            int b = 20;
            //变量使用if判断
            if (a == b) {
                System.out.println("a等于b");
            }
            int c = 10;
            if(a==c){
                System.out.println("a等于c");
            }
            System.out.println("结束");
     }
    

    判断语句--if...else

    执行流程:
    首先判断关系表达式看其结果是true还是false
    如果是true就执行语句体1
    如果是false就执行语句体2
    public static void main(String[] args) {
           //判断给定的数据是奇数还是偶数
            //定义变量
            int a=1;
            if(a%2==0){
                System.out.println("a是偶数");
            }else
            {
                System.out.println("a是奇数");
            }
            System.out.println("结束"); 
    }
    

    判断语句if..else if..else

    //案例1  判断数字范围
    public static void main(String[] args) {
           // x和y的关系满足如下:
            // x>=3 y = 2x + 1;
            // ‐1<=x<3 y = 2x;
            // x<=‐1 y = 2x – 1;
            // 根据给定的x的值,计算出y的值并输出。
            // 定义变量
            int x = 5;
            int y;
            if (x >= 3) {
                y = 2 * x + 1;
            } else if (x >= -1 && x < 3) {
                y = 2 * x;
            } else {
                y = 2 * x + 1;
            }
            System.out.println("y的值是:" + y);
    }
    
    
    //案例2  指定考试成绩,判断学生等级
    public static void main(String[] args) {
    	int score=95;
            if(score<0 || score>100){
                System.out.println("你的成绩是错误的");
            }else 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{
                System.out.println("你的成绩属于不及格");
            }
    }
    

    if语句和三元运算符的互换

    public static void main(String[] args) {
    	int a = 10;
            int b = 20;
            //定义变量,保存a和b种的较大值
            int c;
            if (a > b) {
                c = a;
            } else {
                c = b;
            }
            //可以将上述功能改写为三元运算符的形式
            c = a > b ? a : b;
    }
    

    选择语句---switch

    执行流程:
    这里要注意一点是if语句种条件必须为boolean表达式 而switch则是任意表达式
    首先计算出表达式的值
    其次,和case依次比较,一旦有对应的值,就会执行相应的语句,遇到break就会结束。
    最后,如果所有的case都和表达式的值不匹配,就会执行default语句体部分,然后程序结束掉。
    
    //案例  根据给定的数字判断今天星期几
    public static void main(String[] args) {
    	//定义变量,判断是星期几
            int weekday=6;
            //switch语句实现
            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;
            }
    }
    

    case的穿透性

    在switch语句中,如果case的后面不写break,将出现穿透现象,也就是不会在判断下一个case的值,直接向后运行,直到遇到break,或者整体switch结束。
    //案例
    public static void main(String[] args) { 
    	int i = 5; 
    	switch (i){ 
    	case 0: 
    		System.out.println("执行case0"); 
    		break;
        case 5: 
        	System.out.println("执行case5"); 
        case 10: 
        	System.out.println("执行case10"); 
        default: 
        	System.out.println("执行default");
        } 
     }
     上述程序执行完以后,执行case5后,由于没有break语句,程序会一直往后走,不会在判断case,也不理会break,直接运行完整体switch语句。
     由此需要注意,case语句具有穿透性,必须要加上break语句(特殊情况除外)。
    

    循环语句--for

    for(初始表达式1;布尔表达式2;步进表达式4){
    	循环体3;
    }
    执行流程:
    1234>234>234>..2不满足为止
    1负责完成循环变量的初始化
    2负责判断是否满足循环条件,不满足则跳出循环
    3为具体执行的语句
    4循环后,循环条件所涉及变量的变化情况
    
    //循环练习:使用循环,计算1-100之间的偶数和
    public static void main(String[] args) { 
    	//定义一个初始化变量,记录累加求和,初始值为0
            int sum = 0;
            //2.利用for循环获取1-100之间的数字
            for (int i = 1; i <= 100; i++) {
                //3.判断获取的数组是奇数还是偶数
                if (i % 2 == 0) {
                    //4.如果是偶数就累加求和
                    sum += i;
                }
            }
    }
    

    循环语句--while

    格式:
    初始化表达式1
    while(布尔表达式2){
    	循环体3
    	步进表达式4
    }
    执行流程:
    执行顺序:1234>234>234...2不满足为止
    1负责完成循环变量初始化
    2负责判断是否满足循环条件,不满足则跳出循环
    3具体执行的语句
    4循环后,循环变量的变化情况
    
    //案例 实现累加求和
    public static void main(String[] args) { 
    	//使用while循环实现
            //定义一个变量,记录累加求和
            int sum = 0;
            //定义初始表达式
            int i = 1;
            //使用while循环让初始表达式的值变化
            while (i <= 100) {
                //累加求和
                sum += i;
                //步进表达式改变变量的值'
                i++;
            }
    }
    

    循环语句--do...while

    初始表达式1
    do{
    	循环体3
    	步进表达式4
    }while(布尔表达式3);
    执行流程:
    执行顺序:134>234>234...2不满足为止
    1负责完成循环变量的初始化
    2负责判断是否满足循环条件,不满足则跳出循环
    3具体执行的语句
    4循环后,循环变量的变化情况
    
    do...while循环的特点,无条件执行一次循环,即使我们将循环条件直接写成false,也依然会循环一次。这样的循环具有一定的风险性。
    

    循环语句的区别

    for跟while的小区别:
    1.控制条件语句所控制的那个变量,在for循环结束后,就不能在被访问到了,而while循环结束还可以继续使用,如果你还想继续使用,就用while,否则推荐使用for,原因是for循环结束,该变量就从内存中消失了,能提高内存的使用效率。
    在已知循环次数的时候使用for,循环次数未知的时推荐使用while(布尔表达式为true,从内部直接break来以此结束循环)
    
    break:终止switch或者循环
    continue:结束本次循环,继续下一次的循环
    

    嵌套循环

    //案例  打印直角三角形
    public static void main(String[] args) { 
    	for (int i = 1; i <=5; i++) {
                for(int j=1;j<=i;j++){
                    System.out.print("*");
                }
                System.out.println();
            }
    }
    
  • 相关阅读:
    菜鸟系列k8s——快速部署k8s集群(3)
    菜鸟系列docker——docker容器(7)
    菜鸟系列Fabric源码学习 — 区块同步
    菜鸟系列Fabric源码学习 — peer节点启动
    菜鸟系列Fabric源码学习 — orderer服务启动
    递归科赫雪花
    汉诺塔递归函数hanoi
    字符串格式化与.format()
    turtle风轮绘制
    接口签名2
  • 原文地址:https://www.cnblogs.com/gesh-code/p/14467714.html
Copyright © 2020-2023  润新知