Skip to content

控制结构

条件语句

if-else语句

java
public class IfDemo {
    public static void main(String[] args) {
        int age = 20;
        
        // 基本if语句
        if (age >= 18) {
            System.out.println("成年人");
        }
        
        // if-else语句
        if (age >= 18) {
            System.out.println("成年人");
        } else {
            System.out.println("未成年人");
        }
        
        // if-else if-else语句
        int score = 85;
        if (score >= 90) {
            System.out.println("优秀");
        } else if (score >= 80) {
            System.out.println("良好");
        } else if (score >= 60) {
            System.out.println("及格");
        } else {
            System.out.println("不及格");
        }
    }
}

嵌套if语句

java
int age = 25;
boolean hasLicense = true;

if (age >= 18) {
    if (hasLicense) {
        System.out.println("可以驾驶");
    } else {
        System.out.println("需要先考驾照");
    }
} else {
    System.out.println("未成年,不能驾驶");
}

switch语句

基本switch

java
public class SwitchDemo {
    public static void main(String[] args) {
        int day = 3;
        
        switch (day) {
            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;
            default:
                System.out.println("周末");
        }
    }
}

多值匹配

java
int month = 2;
switch (month) {
    case 1, 2, 3:
        System.out.println("第一季度");
        break;
    case 4, 5, 6:
        System.out.println("第二季度");
        break;
    case 7, 8, 9:
        System.out.println("第三季度");
        break;
    case 10, 11, 12:
        System.out.println("第四季度");
        break;
}

switch表达式(Java 14+)

java
// 新语法,不需要break
int day = 3;
String dayName = switch (day) {
    case 1 -> "星期一";
    case 2 -> "星期二";
    case 3 -> "星期三";
    case 4 -> "星期四";
    case 5 -> "星期五";
    default -> "周末";
};
System.out.println(dayName);

// 多行代码块
int score = 85;
String result = switch (score / 10) {
    case 9, 10 -> "优秀";
    case 8 -> {
        System.out.println("良好");
        yield "良好";
    }
    case 7 -> "中等";
    case 6 -> "及格";
    default -> "不及格";
};

字符串switch(Java 7+)

java
String color = "red";
switch (color) {
    case "red":
        System.out.println("红色");
        break;
    case "green":
        System.out.println("绿色");
        break;
    case "blue":
        System.out.println("蓝色");
        break;
    default:
        System.out.println("未知颜色");
}

循环语句

for循环

java
public class ForDemo {
    public static void main(String[] args) {
        // 基本for循环
        for (int i = 0; i < 5; i++) {
            System.out.println("第 " + (i + 1) + " 次循环");
        }
        
        // 遍历数组
        int[] nums = {1, 2, 3, 4, 5};
        for (int i = 0; i < nums.length; i++) {
            System.out.println(nums[i]);
        }
        
        // 嵌套循环
        for (int i = 1; i <= 9; i++) {
            for (int j = 1; j <= i; j++) {
                System.out.printf("%d×%d=%d\t", j, i, i * j);
            }
            System.out.println();
        }
    }
}

增强for循环

java
// 遍历数组
int[] nums = {1, 2, 3, 4, 5};
for (int num : nums) {
    System.out.println(num);
}

// 遍历集合
List<String> names = Arrays.asList("张三", "李四", "王五");
for (String name : names) {
    System.out.println(name);
}

while循环

java
public class WhileDemo {
    public static void main(String[] args) {
        // while循环
        int i = 0;
        while (i < 5) {
            System.out.println("i = " + i);
            i++;
        }
        
        // 读取输入直到特定值
        Scanner scanner = new Scanner(System.in);
        int sum = 0;
        System.out.println("输入数字(0结束):");
        int num;
        while ((num = scanner.nextInt()) != 0) {
            sum += num;
        }
        System.out.println("总和: " + sum);
    }
}

do-while循环

java
// 至少执行一次
int num;
Scanner scanner = new Scanner(System.in);
do {
    System.out.print("请输入正数: ");
    num = scanner.nextInt();
} while (num <= 0);
System.out.println("输入的正数是: " + num);

跳转语句

break语句

java
public class BreakDemo {
    public static void main(String[] args) {
        // 跳出循环
        for (int i = 0; i < 10; i++) {
            if (i == 5) {
                break;  // 跳出循环
            }
            System.out.println(i);
        }
        
        // 带标签的break
        outer:
        for (int i = 0; i < 3; i++) {
            for (int j = 0; j < 3; j++) {
                if (i == 1 && j == 1) {
                    break outer;  // 跳出外层循环
                }
                System.out.println("i=" + i + ", j=" + j);
            }
        }
    }
}

continue语句

java
public class ContinueDemo {
    public static void main(String[] args) {
        // 跳过当前迭代
        for (int i = 0; i < 10; i++) {
            if (i % 2 == 0) {
                continue;  // 跳过偶数
            }
            System.out.println(i);  // 输出奇数
        }
        
        // 带标签的continue
        outer:
        for (int i = 0; i < 3; i++) {
            for (int j = 0; j < 3; j++) {
                if (j == 1) {
                    continue outer;  // 跳到外层循环的下一次迭代
                }
                System.out.println("i=" + i + ", j=" + j);
            }
        }
    }
}

return语句

java
public class ReturnDemo {
    public static void main(String[] args) {
        int result = sum(1, 100);
        System.out.println("1到100的和: " + result);
    }
    
    public static int sum(int start, int end) {
        int total = 0;
        for (int i = start; i <= end; i++) {
            total += i;
        }
        return total;  // 返回结果
    }
    
    public static void printPositive(int num) {
        if (num <= 0) {
            return;  // 提前返回
        }
        System.out.println("正数: " + num);
    }
}

实用示例

猜数字游戏

java
import java.util.Scanner;
import java.util.Random;

public class GuessNumber {
    public static void main(String[] args) {
        Random random = new Random();
        int target = random.nextInt(100) + 1;
        Scanner scanner = new Scanner(System.in);
        int guess;
        int attempts = 0;
        
        System.out.println("猜数字游戏(1-100)");
        
        do {
            System.out.print("请输入你的猜测: ");
            guess = scanner.nextInt();
            attempts++;
            
            if (guess < target) {
                System.out.println("太小了!");
            } else if (guess > target) {
                System.out.println("太大了!");
            } else {
                System.out.println("恭喜你猜对了!用了 " + attempts + " 次");
            }
        } while (guess != target);
    }
}

打印菱形

java
public class Diamond {
    public static void main(String[] args) {
        int n = 5;
        
        // 上半部分
        for (int i = 1; i <= n; i++) {
            for (int j = 1; j <= n - i; j++) {
                System.out.print(" ");
            }
            for (int j = 1; j <= 2 * i - 1; j++) {
                System.out.print("*");
            }
            System.out.println();
        }
        
        // 下半部分
        for (int i = n - 1; i >= 1; i--) {
            for (int j = 1; j <= n - i; j++) {
                System.out.print(" ");
            }
            for (int j = 1; j <= 2 * i - 1; j++) {
                System.out.print("*");
            }
            System.out.println();
        }
    }
}

水仙花数

java
public class NarcissisticNumber {
    public static void main(String[] args) {
        System.out.println("100-999之间的水仙花数:");
        
        for (int num = 100; num <= 999; num++) {
            int hundreds = num / 100;
            int tens = (num / 10) % 10;
            int ones = num % 10;
            
            if (hundreds * hundreds * hundreds + 
                tens * tens * tens + 
                ones * ones * ones == num) {
                System.out.println(num);
            }
        }
    }
}