【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);
    }
}
原文地址:https://www.cnblogs.com/mindzone/p/12705926.html