从0开始学习Java+AI知识点总结-3.程序流程控制

81 阅读3分钟

1.分支结构

if语句

if语句用于基于条件执行不同的代码块。它根据布尔表达式的值决定执行哪部分代码。if语句可以单独使用,也可以与else或else if组合使用。

基本语法:

if (条件表达式) {
    // 条件为true时执行的代码
}
 

带有else的语法:

if (条件表达式) {
    // 条件为true时执行的代码
} else {
    // 条件为false时执行的代码
}
 

多条件判断:

if (条件1) {
    // 条件1true时执行
} else if (条件2) {
    // 条件2true时执行
} else {
    // 所有条件都为false时执行
}
 

switch语句

switch语句用于基于不同情况执行不同代码块。switch语句使用表达式值与case标签匹配来决定执行路径。

基本语法:

switch(表达式) {
    case1:
        // 代码块1
        break;
    case2:
        // 代码块2
        break;
    default:
        // 默认代码块
}
 

if语句更适合:

  • 布尔条件判断
  • 范围检查
  • 复杂条件组合

switch语句更适合:

  • 固定值匹配
  • 代码可读性要求高的场景

switch分支结构的几点注意事项

表达式类型只能是byte、short、int、char,JDK5开始支持枚举,JDK7开始支持String、不支持double、float、long。 case给出的值不允许重复,且只能是字面量,不能是变量。 正常使用switch的时候,不要忘记写break,否则会出现穿透现象。

2.循环结构

for循环

for循环是一种常用的循环结构,适合在已知循环次数的情况下使用。语法如下:

for (初始化; 条件; 迭代) {
    // 循环体
}

  • 初始化:在循环开始时执行一次,通常用于声明和初始化循环变量。
  • 条件:每次循环前检查,条件为true时继续循环,false时退出。
  • 迭代:每次循环结束后执行,通常用于更新循环变量。

示例:

for (int i = 0; i < 5; i++) {
    System.out.println(i);
}

输出:0到4的数字。

for循环案例:查找水仙花数

while循环

while循环在条件为true时重复执行代码块,适合循环次数不确定的情况。语法如下:

while (条件) {
    // 循环体
}

  • 条件:每次循环前检查,为true时执行循环体,false时退出。

示例:

int i = 0;
while (i < 5) {
    System.out.println(i);
    i++;
}

输出:0到4的数字。

while循环案例:1.世界最高山峰珠穆朗玛峰高度是:8848.86米=8848860毫米,假如我有一张足够大的纸,它的厚度是0.1毫米。请问:该纸张折叠多少次,可以折成珠穆朗玛峰的高度?

2.假设你在银行投资了100000元,银行给出的复利是1.7%,问多少年后能实现本金翻倍?

do while循环

do while循环与while类似,区别在于它至少执行一次循环体,再检查条件。语法如下:

do {
    // 循环体
} while (条件);

  • 条件:循环体执行后检查,为true时继续循环,false时退出。

示例:

int i = 0;
do {
    System.out.println(i);
    i++;
} while (i < 5);

输出:0到4的数字。

死循环

死循环是指循环条件始终为true,导致循环无法终止。通常需要强制退出(如使用break或程序终止)。

示例:

while (true) {
    System.out.println("无限循环");
}

for (;;) {
    System.out.println("无限循环");
}

死循环可用于需要持续运行的程序(如服务器监听)。

嵌套循环

嵌套循环是指在一个循环内包含另一个循环。常用于处理多维数据(如二维数组)。

示例:

for (int i = 0; i < 3; i++) {
    for (int j = 0; j < 2; j++) {
        System.out.println(i + ", " + j);
    }
}

输出:

0, 0
0, 1
1, 0
1, 1
2, 0
2, 1

嵌套循环可以多层嵌套,但需注意性能问题。

3.break、continue

break : 跳出并结束当前所在循环的执行。

continue: 用于跳出当前循环的当次执行,直接进入循环的下一次执行。

注意:

break : 只能用于结束所在循环, 或者结束所在switch分支的执行。

continue : 只能在循环中进行使用。

4.综合小案例

简单计算器

public class test2 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入第一个数:");
        int a = sc.nextInt();
        System.out.println("请输入第二个数:");
        int b = sc.nextInt();
        System.out.println("请输入运算符:");
        String opr = sc.next();
        double result = calc(a, b, opr);
        System.out.println(result);
    }
    public static double calc(int a, int b, String opr) {
        double result = 0;
        switch (opr) {
            case "+":
                result = a + b;
                break;
            case "-":
                result = a - b;
                break;
            case "*":
                result = a * b;
                break;
            case "/":
                result = a / b;
                break;
        }
        return result;
    }
}

猜数字游戏

public class Test3 {
    public static void main(String[] args) {
//        Random random = new Random();
        int number = (int)(Math.random()*100+1);
        Scanner sc = new Scanner(System.in);
        while(true){
            System.out.println("请输入你要猜的数字:");
            int num = sc.nextInt();
            if(num > number){
                System.out.println("你猜的数字太大了");
            }else if(num < number){
                System.out.println("你猜的数字太小了");
            }else{
                System.out.println("恭喜你猜对了");
                break;
            }
        }
    }
}

验证码

public class yzm {
    public static void main(String[] args) {
        String code4 = getYZM(4);
        String code6 = getYZM(6);
        System.out.println("4位验证码为:" + code4);
        System.out.println("6位验证码为:" + code6);
    }

    public static String getYZM(int count) {
        String code = "";
        Random r = new Random();
        for (int i = 0; i < count; i++) {
            int type = r.nextInt(3);
            type = 0;
            switch (type) {
                case 0:
                    code += r.nextInt(10) + 1;
                    break;
                case 1:
                    code += (char) (r.nextInt(26) + 65);
                    break;
                case 2:
                    code += (char) (r.nextInt(26) + 97);
                    break;
            }
        }
        return code;
    }
}

找素数

public class zss {
    public static void main(String[] args) {
        // 遍历 101 到 200 之间的所有数字
        for (int i = 101; i <= 200; i++) {
            // 如果当前数字是素数,则打印该数字
            if (isPrime(i)) {
                System.out.print(i + " ");
            }
        }
    }
    public static boolean isPrime(int number) {
        // 从 2 开始遍历到 number/2,检查是否有能整除的数
        for (int i = 2; i < number / 2; i++) {
            // 如果存在因数,则不是素数
            if (number % i == 0) {
                return false;
            }
        }
        // 没有找到因数,说明是素数
        return true;
    }
}