← 返回首页
🔄

Java控制流:条件语句与循环

📂 java ⏱ 4 min 766 words

Java控制流:条件语句与循环

概述

控制流语句用于控制程序的执行流程。Java提供了条件语句和循环语句来实现不同的控制流需求。

1. 条件语句

if-else语句

public class IfElseExample {
    public static void main(String[] args) {
        int score = 85;
        
        if (score >= 90) {
            System.out.println("优秀");
        } else if (score >= 80) {
            System.out.println("良好");
        } else if (score >= 70) {
            System.out.println("中等");
        } else if (score >= 60) {
            System.out.println("及格");
        } else {
            System.out.println("不及格");
        }
    }
}

嵌套if-else

public class NestedIfExample {
    public static void main(String[] args) {
        int age = 25;
        boolean hasID = true;
        
        if (age >= 18) {
            if (hasID) {
                System.out.println("允许进入");
            } else {
                System.out.println("请出示身份证");
            }
        } else {
            System.out.println("未成年人不允许进入");
        }
    }
}

switch语句

public class SwitchExample {
    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;
            case 6:
                System.out.println("星期六");
                break;
            case 7:
                System.out.println("星期日");
                break;
            default:
                System.out.println("无效的日期");
                break;
        }
    }
}

switch表达式(Java 14+)

public class SwitchExpressionExample {
    public static void main(String[] args) {
        int day = 3;
        
        String dayName = switch (day) {
            case 1 -> "星期一";
            case 2 -> "星期二";
            case 3 -> "星期三";
            case 4 -> "星期四";
            case 5 -> "星期五";
            case 6 -> "星期六";
            case 7 -> "星期日";
            default -> "无效的日期";
        };
        
        System.out.println(dayName);
    }
}

2. 循环语句

for循环

public class ForLoopExample {
    public static void main(String[] args) {
        // 基本for循环
        for (int i = 0; i < 5; i++) {
            System.out.println("i = " + i);
        }
        
        // 嵌套for循环
        for (int i = 1; i <= 3; i++) {
            for (int j = 1; j <= 3; j++) {
                System.out.print(i * j + "\t");
            }
            System.out.println();
        }
    }
}

while循环

public class WhileLoopExample {
    public static void main(String[] args) {
        int count = 0;
        
        while (count < 5) {
            System.out.println("count = " + count);
            count++;
        }
    }
}

do-while循环

public class DoWhileExample {
    public static void main(String[] args) {
        int count = 0;
        
        do {
            System.out.println("count = " + count);
            count++;
        } while (count < 5);
    }
}

增强for循环(for-each)

public class ForEachExample {
    public static void main(String[] args) {
        int[] numbers = {1, 2, 3, 4, 5};
        
        // 增强for循环
        for (int number : numbers) {
            System.out.println("number = " + number);
        }
        
        // 等价的普通for循环
        for (int i = 0; i < numbers.length; i++) {
            System.out.println("numbers[" + i + "] = " + numbers[i]);
        }
    }
}

3. 循环控制语句

break语句

public class BreakExample {
    public static void main(String[] args) {
        for (int i = 0; i < 10; i++) {
            if (i == 5) {
                break;  // 当i等于5时跳出循环
            }
            System.out.println("i = " + i);
        }
        // 输出:0 1 2 3 4
    }
}

continue语句

public class ContinueExample {
    public static void main(String[] args) {
        for (int i = 0; i < 10; i++) {
            if (i % 2 == 0) {
                continue;  // 跳过偶数
            }
            System.out.println("i = " + i);
        }
        // 输出:1 3 5 7 9
    }
}

带标签的break和continue

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

4. 实际应用示例

计算阶乘

public class FactorialExample {
    public static void main(String[] args) {
        int n = 5;
        long factorial = 1;
        
        for (int i = 1; i <= n; i++) {
            factorial *= i;
        }
        
        System.out.println(n + "的阶乘 = " + factorial);
    }
}

判断素数

public class PrimeNumberExample {
    public static void main(String[] args) {
        int number = 17;
        boolean isPrime = true;
        
        if (number <= 1) {
            isPrime = false;
        } else {
            for (int i = 2; i <= Math.sqrt(number); i++) {
                if (number % i == 0) {
                    isPrime = false;
                    break;
                }
            }
        }
        
        if (isPrime) {
            System.out.println(number + "是素数");
        } else {
            System.out.println(number + "不是素数");
        }
    }
}

打印九九乘法表

public class MultiplicationTableExample {
    public static void main(String[] args) {
        for (int i = 1; i <= 9; i++) {
            for (int j = 1; j <= i; j++) {
                System.out.print(j + " × " + i + " = " + (i * j) + "\t");
            }
            System.out.println();
        }
    }
}

最佳实践

  1. 避免无限循环:确保循环条件最终会变为false
  2. 使用合适的循环类型:根据需求选择for、while或do-while
  3. 避免过多嵌套:嵌套循环会降低代码可读性
  4. 使用break和continue:合理使用可以简化循环逻辑

总结

控制流语句是Java编程的基础,掌握条件语句和循环语句对于编写复杂的程序逻辑至关重要。在实际编程中,要根据具体需求选择合适的控制流语句,并注意代码的可读性和效率。