Java基础入门流程控制全解析:分支、循环与随机数实战
引言
流程控制是编程语言的核心逻辑结构,决定了程序的执行顺序与逻辑判断能力。本文以 分支结构、循环结构 和 随机数生成 为核心,结合代码示例与底层原理,全面解析Java中流程控制的应用场景与实战技巧。
一、分支结构
1. if分支
作用:根据条件表达式的结果(true
/false
)决定代码执行路径。
三种形式
-
单分支
if (条件) { // 条件为true时执行 }
-
双分支
if (条件) { // 条件为true时执行 } else { // 条件为false时执行 }
-
多分支
if (条件1) { // 条件1为true时执行 } else if (条件2) { // 条件2为true时执行 } else { // 所有条件均不满足时执行 }
案例:成绩奖励机制
Scanner sc = new Scanner(System.in);
System.out.print("请输入成绩:");
int score = sc.nextInt();
if (score >= 95) {
System.out.println("奖励山地自行车一辆");
} else if (score >= 90) {
System.out.println("奖励游乐场玩一次");
} else if (score >= 80) {
System.out.println("奖励变形金刚玩具一个");
} else {
System.out.println("胖揍一顿");
}
2. switch分支
作用:根据表达式的值匹配具体分支执行,适合离散值比较。
语法
switch (表达式) {
case 值1:
// 匹配值1时执行
break;
case 值2:
// 匹配值2时执行
break;
default:
// 无匹配时执行
}
注意事项
-
表达式类型:支持
byte
、short
、int
、char
、String
(JDK7+)和枚举。 -
穿透性:若未写
break
,会继续执行后续case
代码。 -
case值唯一性:不能重复且必须为字面量。
案例:工作日备忘录
String day = "周一";
switch (day) {
case "周一":
System.out.println("埋头苦干,解决bug");
break;
case "周三":
System.out.println("今晚啤酒、龙虾、小烧烤");
break;
default:
System.out.println("按部就班工作");
}
二、循环结构
1. for循环
作用:已知循环次数时,控制代码重复执行。
语法
for (初始化语句; 循环条件; 迭代语句) {
// 循环体
}
案例:求1-100的偶数和
int sum = 0;
for (int i = 1; i <= 100; i++) {
if (i % 2 == 0) {
sum += i;
}
}
System.out.println("偶数和:" + sum);
2. while循环
作用:不确定循环次数时,根据条件重复执行代码。
语法
初始化语句;
while (循环条件) {
// 循环体
迭代语句;
}
案例:纸张折叠成珠峰高度
double peakHeight = 8848860; // 珠峰高度(毫米)
double paperThickness = 0.1; // 纸张厚度(毫米)
int count = 0;
while (paperThickness < peakHeight) {
paperThickness *= 2;
count++;
}
System.out.println("需折叠次数:" + count);
3. do-while循环
特点:先执行循环体,再判断条件,至少执行一次。
语法
初始化语句;
do {
// 循环体
迭代语句;
} while (循环条件);
案例:用户菜单选择
Scanner sc = new Scanner(System.in);
int choice;
do {
System.out.println("1.登录 2.注册 3.退出");
choice = sc.nextInt();
} while (choice != 3);
三、跳转关键字
1. break
作用:立即终止当前循环或switch
分支。
案例:密码验证
Scanner sc = new Scanner(System.in);
int correctPwd = 520;
while (true) {
System.out.print("请输入密码:");
int input = sc.nextInt();
if (input == correctPwd) {
System.out.println("欢迎进入系统");
break;
} else {
System.out.println("密码错误");
}
}
2. continue
作用:跳过当前循环的剩余代码,进入下一次迭代。
案例:输出1-10的非偶数
for (int i = 1; i <= 10; i++) {
if (i % 2 == 0) {
continue;
}
System.out.println(i);
}
四、随机数生成(Random类)
1. 基本使用
步骤:
-
导包:
import java.util.Random;
-
创建对象:
Random r = new Random();
-
生成随机数:
int num = r.nextInt(范围);
案例:生成1-100随机数
Random r = new Random();
int number = r.nextInt(100) + 1; // 1-100
System.out.println("随机数:" + number);
2. 猜数字游戏
Random r = new Random();
int target = r.nextInt(100) + 1;
Scanner sc = new Scanner(System.in);
while (true) {
System.out.print("请输入猜测数字(1-100):");
int guess = sc.nextInt();
if (guess > target) {
System.out.println("过大");
} else if (guess < target) {
System.out.println("过小");
} else {
System.out.println("猜中了!");
break;
}
}
五、总结
-
分支结构:
if
适合区间判断,switch
适合离散值匹配。 -
循环结构:
for
用于已知次数,while
用于未知次数,do-while
至少执行一次。 -
跳转关键字:
break
终止循环,continue
跳过当前迭代。 -
Random类:灵活生成指定范围的随机数,增强程序交互性。
学习建议:
-
多练习循环嵌套(如打印九九乘法表)。
-
结合实际问题设计分支逻辑(如用户权限验证)。
-
尝试实现复杂交互逻辑(如猜数字游戏的难度分级)。