Java 控制结构
控制结构用于控制程序的执行流程,包括条件语句和循环语句。
条件语句
if 语句
public class IfStatement {
public static void main(String[] args) {
int score = 85;
// 单 if 语句
if (score >= 60) {
System.out.println("及格");
}
// if-else 语句
if (score >= 60) {
System.out.println("及格");
} else {
System.out.println("不及格");
}
// if-else if-else 语句
if (score >= 90) {
System.out.println("优秀");
} else if (score >= 80) {
System.out.println("良好");
} else if (score >= 60) {
System.out.println("及格");
} else {
System.out.println("不及格");
}
}
}三元运算符
public class TernaryOperator {
public static void main(String[] args) {
int a = 10, b = 20;
// 语法:条件 ? 值1 : 值2
// 如果条件为 true,返回值1;否则返回值2
int max = (a > b) ? a : b;
System.out.println("最大值:" + max);
String result = (a > 0) ? "正数" : "非正数";
System.out.println("结果:" + result);
// 嵌套三元运算符(不推荐,可读性差)
int x = 10;
String msg = (x > 0) ? ((x > 10) ? "大于10" : "小于等于10") : "非正数";
System.out.println("msg: " + msg);
}
}switch 语句
public class SwitchStatement {
public static void main(String[] args) {
int day = 3;
// switch 语句(Java 7+ 支持 String)
switch (day) {
case 1:
System.out.println("星期一");
break; // 必须使用 break,否则会继续执行下一个 case
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:
case 7: // 多个 case 可以合并
System.out.println("周末");
break;
default: // 默认情况
System.out.println("无效的日期");
}
// switch 表达式(Java 14+)
String dayName = switch (day) {
case 1 -> "星期一";
case 2 -> "星期二";
case 3 -> "星期三";
case 4 -> "星期四";
case 5 -> "星期五";
case 6, 7 -> "周末";
default -> "无效的日期";
};
System.out.println("dayName: " + dayName);
// switch 支持 String(Java 7+)
String season = "春天";
switch (season) {
case "春天":
System.out.println("万物复苏");
break;
case "夏天":
System.out.println("烈日炎炎");
break;
case "秋天":
System.out.println("秋高气爽");
break;
case "冬天":
System.out.println("白雪皑皑");
break;
default:
System.out.println("未知季节");
}
}
}循环语句
for 循环
public class ForLoop {
public static void main(String[] args) {
// 标准 for 循环
// 语法:for (初始化; 条件; 更新) { 循环体 }
for (int i = 0; i < 5; i++) {
System.out.println("i = " + i);
}
// 输出:
// i = 0
// i = 1
// i = 2
// i = 3
// i = 4
// 倒序循环
for (int i = 5; i > 0; i--) {
System.out.println("i = " + i);
}
// 步长不为 1
for (int i = 0; i < 10; i += 2) {
System.out.println("i = " + i);
}
// 输出:0, 2, 4, 6, 8
// 增强 for 循环(for-each,Java 5+)
int[] numbers = {1, 2, 3, 4, 5};
for (int num : numbers) {
System.out.println("num = " + num);
}
// 嵌套循环
for (int i = 1; i <= 3; i++) {
for (int j = 1; j <= 3; j++) {
System.out.print(i + "x" + j + "=" + (i * j) + " ");
}
System.out.println();
}
// 输出:
// 1x1=1 1x2=2 1x3=3
// 2x1=2 2x2=4 2x3=6
// 3x1=3 3x2=6 3x3=9
}
}while 循环
public class WhileLoop {
public static void main(String[] args) {
// while 循环:先判断条件,再执行循环体
int i = 0;
while (i < 5) {
System.out.println("i = " + i);
i++;
}
// 输出:0, 1, 2, 3, 4
// 计算 1 到 100 的和
int sum = 0;
int num = 1;
while (num <= 100) {
sum += num;
num++;
}
System.out.println("1 到 100 的和:" + sum);
// 无限循环(需要 break 退出)
int count = 0;
while (true) {
count++;
if (count > 5) {
break; // 退出循环
}
System.out.println("count = " + count);
}
}
}do-while 循环
public class DoWhileLoop {
public static void main(String[] args) {
// do-while 循环:先执行循环体,再判断条件
// 至少执行一次
int i = 0;
do {
System.out.println("i = " + i);
i++;
} while (i < 5);
// 输出:0, 1, 2, 3, 4
// 即使条件一开始就为 false,也会执行一次
int j = 10;
do {
System.out.println("j = " + j);
j++;
} while (j < 5); // 条件为 false,但会执行一次
// 输出:j = 10
}
}跳转语句
break 语句
public class BreakStatement {
public static void main(String[] args) {
// break:跳出当前循环
for (int i = 0; i < 10; i++) {
if (i == 5) {
break; // 当 i == 5 时,跳出循环
}
System.out.println("i = " + i);
}
// 输出:0, 1, 2, 3, 4
// 带标签的 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);
}
}
// 输出:
// i = 0, j = 0
// i = 0, j = 1
// i = 0, j = 2
// i = 1, j = 0
}
}continue 语句
public class ContinueStatement {
public static void main(String[] args) {
// continue:跳过本次循环,继续下一次循环
for (int i = 0; i < 10; i++) {
if (i % 2 == 0) {
continue; // 跳过偶数
}
System.out.println("i = " + i);
}
// 输出:1, 3, 5, 7, 9(只输出奇数)
// 带标签的 continue:跳过指定循环的本次迭代
outer: for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
if (i == 1 && j == 1) {
continue outer; // 跳过外层循环的本次迭代
}
System.out.println("i = " + i + ", j = " + j);
}
}
}
}return 语句
public class ReturnStatement {
public static void main(String[] args) {
// return:退出方法
for (int i = 0; i < 10; i++) {
if (i == 5) {
return; // 退出 main 方法,程序结束
}
System.out.println("i = " + i);
}
System.out.println("这行不会执行");
}
// 带返回值的 return
public static int add(int a, int b) {
return a + b; // 返回计算结果
}
// 提前返回
public static String checkAge(int age) {
if (age < 0) {
return "年龄无效"; // 提前返回
}
if (age < 18) {
return "未成年";
}
return "成年";
}
}实际应用示例
示例1:查找数组中的最大值
public class FindMax {
public static void main(String[] args) {
int[] numbers = {3, 7, 2, 9, 1, 5};
int max = numbers[0]; // 假设第一个元素是最大值
for (int i = 1; i < numbers.length; i++) {
if (numbers[i] > max) {
max = numbers[i];
}
}
System.out.println("最大值:" + max);
}
}示例2:判断质数
public class PrimeNumber {
public static void main(String[] args) {
int num = 17;
boolean isPrime = true;
if (num < 2) {
isPrime = false;
} else {
// 只需要检查到 sqrt(num)
for (int i = 2; i * i <= num; i++) {
if (num % i == 0) {
isPrime = false;
break; // 找到因子,不是质数,退出循环
}
}
}
if (isPrime) {
System.out.println(num + " 是质数");
} else {
System.out.println(num + " 不是质数");
}
}
}示例3:打印九九乘法表
public class MultiplicationTable {
public static void main(String[] args) {
for (int i = 1; i <= 9; i++) {
for (int j = 1; j <= i; j++) {
System.out.print(j + "x" + i + "=" + (i * j) + "\t");
}
System.out.println(); // 换行
}
}
}示例4:菜单选择
import java.util.Scanner;
public class MenuSelection {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while (true) {
System.out.println("=== 菜单 ===");
System.out.println("1. 选项一");
System.out.println("2. 选项二");
System.out.println("3. 选项三");
System.out.println("0. 退出");
System.out.print("请选择:");
int choice = scanner.nextInt();
switch (choice) {
case 1:
System.out.println("执行选项一");
break;
case 2:
System.out.println("执行选项二");
break;
case 3:
System.out.println("执行选项三");
break;
case 0:
System.out.println("退出程序");
return; // 退出程序
default:
System.out.println("无效的选择");
}
}
}
}总结
Java 控制结构包括:
- 条件语句:if、if-else、switch
- 循环语句:for、while、do-while
- 跳转语句:break、continue、return
掌握这些控制结构可以编写各种复杂的程序逻辑。
相关链接: