• 【Java】07 FlowControl 流程控制


    FlowControl 流程控制

    什么是流程控制?

    控制流程(也称为流程控制)是计算机运算领域的用语,意指在程序运行时,个别的指令(或是陈述、子程序)运行或求值的顺序。

    不论是在声明式编程语言或是函数编程语言中,都有类似的概念。

    基本的三种流程结构:

    - 顺序结构,自上而下的一般结构

    - 分支结构,执行特定条件则跳转顺序

    - 循环结构,到达条件时重复执行,或者是中断执行

    分支结构:

    单if结构:

    package cn.dai;
    
    public class Variable {
        public static void main(String[] args) {
            
            // 这个括号里面可以是布尔值,也可以是布尔表达式,用于逻辑判断
            if (true){
                System.out.println("if的条件结果位true,执行这个代码块");
            }
            
            // 当有多个if时,程序两个if会分开执行处理 因为这两个是区分开的结构体
            // 如果只有一行语句,可以不写大括号
            if (0 > -1) System.out.println("这个if也为true,执行");
        }
    }

    else

    package cn.dai;
    
    public class Variable {
        public static void main(String[] args) {
            if (false){
                System.out.println("if的条件结果位true,执行这个代码块");
            } else { 
                // else 默认 是if相反的结果,如果if条件不成立,则一定处理else
                // else 就表示了除了if剩下的结果,所以没有条件要求
            }
        }
    }

    else if

    package cn.dai;
    
    public class Variable {
        public static void main(String[] args) {
            if (false){
                System.out.println("if的条件结果位true,执行这个代码块");
            } else if (true){
                // 如果要判断的情况超过2个以上,可以使用else if增加分支
                // if + else if + else 同属一个结构体内
                // 多个else if中,只要最先位置的 if/ else if的条件成立 ,后面的else if都不再执行
            }
        }
    }

    swich-case

    package cn.dai;
    
    public class Variable {
        public static void main(String[] args) {
    
            int option = 10;
    
            switch (option){
                case 1: // case 1 表示具体值的一种情况,当括号内的值与case值相等,则开始执行下面的语句,反之不执行
                    System.out.println("case值1");
                    break; // 当语句完成后需要写上break;跳出switch判断体,如果不写break;程序会继续向下执行
                case 2: // 我们可以将多种情况并列在一起让程序判断
                case 3:
                case 4:
                    System.out.println("是2,也是3,也是4的情况");
                    break;
                default: 
                    // default 表示默认的,表示除了switch结构体内所有case情况之外的情况,
                    // 当为最后一个情况时,可以不用再写break;语句跳出了,
                    // 因为所有情况都已经走完了,执行到大括号就会退出switch的结构体
                    System.out.println("一般情况之外");
            }
        }
    }

    关于switch和if - else 的使用场景

    - if else 适用范围的判断

    - switch 适用具体值的判断


    循环结构:

    在一个特定的条件成立下,重复的执行循环体内的代码块

    无限循环While

    package cn.dai;
    
    public class Variable {
        public static void main(String[] args) {
            int round = 10;
            
            // 当while的条件成立时进入循环体,开始执行循环体内的代码块
            // 直到while的条件不成立
            while (round > 0){
                round -- ;
            }
        }
    }

    预先执行循环 do - while

    package cn.dai;
    
    public class Variable {
        public static void main(String[] args) {
            int round = 10;
    
            do{ 
                // 先执行代码块,再开始判断循环条件是否成立
                // 无论while是否循环,do的代码块必须执行
                round --;
            }while (round > 0);
        }
    }

    有限循环for

    package cn.dai;
    
    public class Variable {
        public static void main(String[] args) {
            
            // int i 可以写在外面,起始条件就可以省略不写
            
            // (起始条件 ;  循环条件 ; 迭代条件)    
            for (int i = 0; i < 10; i++) {
                // 循环条件成立 代码块执行 ,迭代变量都在括号内写好了
            }
        }
    }

    嵌套循环

    package cn.dai;
    
    public class Variable {
        public static void main(String[] args) {
            for (int i = 0; i < 5 ; i++) {
                
                for (int j = 0; j < 4; j++) {
                    // 内循环遍历一遍,只是外循环的一次执行
                    // 外循环 5次 内循环 4次 共计遍历 5 * 4 = 20次
                }
            }
        }
    }

    9 * 9 乘法表练习

    package cn.dai;
    
    public class Variable {
        public static void main(String[] args) {
    
            for (int i = 1; i <= 9 ; i++) {
    
                for (int j = 1; j <= i; j++) { // j 跟随 i 遍历 
                    System.out.print(j + " * " + i + " = " +(j * i)+"\t");
                }
                System.out.println(); // 用于换行
            }
        }
    }

    质数获取

    package cn.dai;
    
    public class Variable {
        public static void main(String[] args) {
    
            boolean isPrime = true; // 判断是否是一个质数
    
            for (int i = 2; i < 100; i++) { // 从2开始,上限100  2 - 100 的整数判断
    
                for (int j = 2; j < i; j++) { // 遍历 i 的除数 j
                    if ( i % j == 0) isPrime = false;   // 只要有一个能被整除就不算质数
                }
                if (isPrime) System.out.println(i); // 如果是直接打印
    
                isPrime = true; // 重置判断
            }
        }
    }

    Break & Continue 

    - break 用于 跳出结构体 switch & 循环体

    - continue 用于省略循环,程序执行到循环体内的continue直接跳到结尾处开始下一次循环

    另外这是一种书签式的跳出,不建议学习,可读性差,仅了解即可

    package cn.dai;
    
    public class Variable {
        public static void main(String[] args) {
            
            for (int i = 0; i < 100; i++) {
    
                bookmark1:
                for (int j = 0; j < 50; j++) {
    
                    for (int k = 0; k < 20; k++) {
                        System.out.println("k - " + k);
                        if (k == 10)break bookmark1;
                    }
                }
                System.out.println("i - " + i);
            }
        }
    }

    关于质数的二次改造

    package cn.dai;
    
    public class Variable {
        public static void main(String[] args) {
    
            int count = 0 ; // 计数质数
    
            // 设置标签记号
            pass:for (int i = 2; i < 1000; i++) {
    
                for (int j = 2; j <= Math.sqrt(i) ; j++) {
                    if (i % j == 0) continue pass; // 如果能被整除直接跳至标记位置开始循环
                }
                System.out.println(i);
                count ++;
            }
            System.out.println("统计个数 " + count);
        }
    }
  • 相关阅读:
    k近邻 KNN
    聚类之k-means
    支持向量机SVM、优化问题、核函数
    [THUSC 2016] 补退选 (Trie树)
    [CQOI2016] 手机号码 (数位dp)
    [CQOI2012] 交换棋子 (费用流)
    [SCOI2016] 背单词 (Trie树)
    [JSOI2009] 球队收益 (费用流)
    [BZOJ1878][SDOI2009] HH的项链 (树状数组)
    [BZOJ2151]种树
  • 原文地址:https://www.cnblogs.com/mindzone/p/12705926.html
Copyright © 2020-2023  润新知