Java学习笔记(2)Java 程序流程控制:条件判断与循环结构详解

165 阅读4分钟

在 Java 编程的世界里,程序的执行流程控制是构建逻辑的核心基础。通过合理运用条件判断和循环结构,我们可以让程序根据不同的情况做出相应的反应,并重复执行特定的代码块,从而实现丰富多样的功能。

一、条件判断语句​

条件判断语句用于根据不同的条件执行不同的代码逻辑,是程序实现分支逻辑的关键。​

1. if-else 语句​

if-else 语句是最基本的条件判断结构,它可以根据一个布尔表达式的真假来决定执行哪一部分代​码​

语法格式:

if (条件表达式) {
    // 当条件为真时执行的代码
} else {
    // 当条件为假时执行的代码
}

示例​

假设我们要判断一个数是否为正数:

int num = 5;
if (num > 0) {
    System.out.println("这个数是正数");
} else {
    System.out.println("这个数不是正数");
}

多级嵌套​

当需要处理多个条件时,可以使用 if-else 的嵌套结构。例如,判断一个数是正数、零还是负数:

int num = 0;
if (num > 0) {
    System.out.println("正数");
} else if (num == 0) {
    System.out.println("零");
} else {
    System.out.println("负数");
}

2. switch 语句​

switch 语句用于对多个固定值进行判断,它比多个 if-else 嵌套更简洁明了,尤其是在处理离散值的情况时。​

语法格式

switch (表达式) {
    case 常量表达式1:
        // 执行代码1
        break;
    case 常量表达式2:
        // 执行代码2
        break;
    ...
    default:
        // 当表达式的值与所有case都不匹配时执行的代码
        break;
}

注意事项​

  • 表达式 的值必须是整数或字符型。。case 后面的常量表达式必须是唯一的。​
  • break 语句用于跳出 switch 结构,避免出现穿透现象(即如果没有 break,会继续执行后面的 case 代码)。

示例​

根据月份判断季节:

int month = 3;
switch (month) {
    case 3:
    case 4:
    case 5:
        System.out.println("春季");
        break;
    case 6:
    case 7:
    case 8:
        System.out.println("夏季");
        break;
    case 9:
    case 10:
    case 11:
        System.out.println("秋季");
        break;
    case 12:
    case 1:
    case 2:
        System.out.println("冬季");
        break;
    default:
        System.out.println("无效的月份");
        break;
}

二、循环结构​

循环结构用于重复执行一段代码,直到满足特定的条件为止。常见的循环结构有 for 循环、while 循环和 do-while 循环。​

1. for 循环​

for 循环通常用于已知循环次数的情况,它的语法结构紧凑,便于控制循环变量。​

语法格式​

for (初始化表达式; 条件表达式; 更新表达式) {
    // 循环体代码
}

执行流程​

  1. 执行初始化表达式,初始化循环变量。​
  2. 判断条件表达式是否为真,若为真则执行循环体。​
  3. 执行完循环体后,执行更新表达式,修改循环变量。​
  4. 再次判断条件表达式,重复步骤 2-4,直到条件表达式为假时退出循环。

示例​

打印 1 到 10 的数字:

for (int i = 1; i <= 10; i++) {
    System.out.print(i + " ");
}

2. while 循环​

while 循环先判断条件表达式,再执行循环体,适用于循环次数不确定的情况。​

语法格式​

while (条件表达式) {
    // 循环体代码
}

示例​

计算 1 到 100 的和:

int sum = 0;
int i = 1;
while (i <= 100) {
    sum += i;
    i++;
}
System.out.println("1到100的和为:" + sum);

3. do-while 循环​

do-while 循环与 while 循环类似,但它先执行循环体,再判断条件表达式,因此循环体至少会执行一次。

语法格式​

do {
    // 循环体代码
} while (条件表达式);

示例​

让用户输入一个正整数,直到输入正确为止:

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int num;
        do {
            System.out.print("请输入一个正整数:");
            num = scanner.nextInt();
        } while (num <= 0);
        System.out.println("你输入的正整数是:" + num);
        scanner.close();
    }
}

三、实战案例​

案例一:猜数字游戏​

需求描述​

计算机生成一个 1 到 100 之间的随机数,玩家猜测这个数字。计算机根据玩家的猜测给出提示(“太大了” 或 “太小了”),直到玩家猜中为止,记录猜测次数并显示游戏结果。​

实现思路​

  1. 使用 Math.random() 函数生成随机数。
  2. 使用 while 循环让玩家不断猜测,直到猜中为止。
  3. 在循环中使用 if-else 语句判断猜测的结果,并给出相应的提示。

代码实现

import java.util.Scanner;

public class GuessNumberGame {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int number = (int) (Math.random() * 100) + 1; // 生成1-100的随机数
        int guess, attempts = 0;
        
        System.out.println("欢迎来到猜数字游戏!");
        System.out.println("请猜测一个1到100之间的数字:");
        
        do {
            guess = scanner.nextInt();
            attempts++;
            
            if (guess > number) {
                System.out.println("太大了!请再猜一次:");
            } else if (guess < number) {
                System.out.println("太小了!请再猜一次:");
            } else {
                System.out.println("恭喜你,猜中了!你用了" + attempts + "次猜测。");
            }
        } while (guess != number);
        
        scanner.close();
    }
}

案例二:打印金字塔图案

需求描述

打印一个由星号(*)组成的金字塔图案,金字塔的层数由用户输入决定。

实现思路

  1. 使用两层嵌套循环,外层循环控制行数,内层循环控制每行的空格数和星号数。
  2. 对于第 i 行(从 1 开始),前面的空格数为 层数 - i,星号数为 2 * i - 1

代码实现

import java.util.Scanner;

public class PyramidPattern {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入金字塔的层数:");
        int rows = scanner.nextInt();
        
        for (int i = 1; i <= rows; i++) {
            // 打印空格
            for (int j = 1; j <= rows - i; j++) {
                System.out.print(" ");
            }
            
            // 打印星号
            for (int k = 1; k <= 2 * i - 1; k++) {
                System.out.print("*");
            }
            
            System.out.println();
        }
        
        scanner.close();
    }
}

四、总结

条件判断和循环结构是程序流程控制的核心要素,掌握它们的使用方法对于编写高效、逻辑清晰的代码至关重要。通过 if-elseswitch 语句,我们可以实现不同条件下的分支逻辑;利用 forwhiledo-while 循环,能够重复执行特定的代码块。