控制结构
条件语句
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);
}
}
}
}