目录导航
1.线性执行流程
2.条件分支结构
2.1.条件判断语句
2.2.多路选择语句
3.条件与选择语句对比分析
4.重复执行结构
4.1.条件循环
4.2.计数循环
4.3.后验循环
4.4.循环中断
4.5.循环跳过
5.循环结构特性比较
6.数据交互处理
6.1.数据接收
6.2.信息展示
7.数字竞猜游戏
导言:尽管Java以面向对象编程为核心,但仍保留了结构化编程元素,主要包括三种控制结构:顺序执行、条件判断和循环迭代。本章将详细解析这些基础语法结构的使用规范、注意事项及典型应用场景,并通过实践练习强化语法掌握,最终实现一个数字猜测互动游戏。
1.线性执行流程
概念解析:代码中的语句按照书写顺序逐条执行,是最基础的程序执行方式。
System.out.println("Java编程");//输出Java编程
System.out.println("张三");//显示张三
System.out.println(3 + 4);//计算结果7
2.条件分支结构
基本原理:程序运行时根据特定条件选择执行不同的代码路径。
分支结构主要包含两种形式:条件判断和多路选择
2.1.条件判断语句
基础语法格式1:
if(条件判断){
执行代码段;
}
语法格式2:
if(条件表达式){
代码段A;
} else{
代码段B;
}
语法格式3:
if(条件1){
代码段1;
} else if(条件2){
代码段2;
} else{
默认代码段;
}
//条件判断语句示例
int userAge = 25;
if(userAge >= 18){//年龄判断
System.out.println("已成年");
}
//双分支结构
if(userAge > 22){
System.out.println("毕业生");
} else{
System.out.println("在校生");
}
//多条件判断
int examScore = 95;
if(examScore >= 90){
System.out.println("A级");
}else if(examScore >= 80){
System.out.println("B级");
}else if(examScore >= 60){
System.out.println("C级");
}else{
System.out.println("D级");
}
关键注意事项:
1.条件表达式必须返回布尔值
2.执行路径具有排他性
3.else
子句遵循 "最近匹配原则",即与 最近的、未配对的 if
自动关联。
3.1.无括号时
,else
自动关联最近if
。
3.2.使用花括号 可以明确控制结构范围。
实践练习
//1. 数值奇偶性判定
int value = 24;
if(value % 2 == 0){
System.out.println(value + "是偶数");
}else{
System.out.println(value + "是奇数");
}
//2. 闰年判断算法
int currentYear = 2024;
if((currentYear % 4 == 0 && currentYear % 100 != 0) || (currentYear % 400 == 0) ){
System.out.println(currentYear + "是闰年");
}else{
System.out.println(currentYear + "是平年");
}
2.2.多路选择语句
标准语法:
switch(选择表达式){
case 选项值1:
//对应代码
break;
case 选项值2:
//对应代码
break;
...
default:
//默认处理
break;
}
int weekDay = 5;
switch(weekDay){
case 1:
System.out.println("周一工作日");
break;
case 5:
System.out.println("周五工作日");
break;
case 6:
System.out.println("周末休息日");
break;
default:
System.out.println("无效输入");
break;
}
//输出:周五工作日
重要限制条件:
1.选择表达式仅支持:整型、字符型、字符串和枚举类型。
浮点型为何不支持?
存在精度误差,无法精确匹配
4.case标签必须为编译期常量
为何需要常量?
编译器需构建静态跳转表
5.break语句防止case穿透
3.条件与选择语句对比分析
对比维度 | IF结构 | SWITCH结构 |
---|---|---|
条件类型 | 任意布尔表达式 | 离散值匹配 |
适用场景 | 范围判断 | 精确匹配 |
代码结构 | 条件嵌套 | 跳转表格 |
执行效率 | 顺序检测 | 直接跳转 |
> 选择建议: | ||
> - 复杂条件 → if | ||
> - 多值匹配 → switch | ||
## 4.重复执行结构 | ||
循环机制包含三种形式:计数循环、条件循环和后验循环 | ||
### 4.1.条件循环 | ||
语法模板: | ||
> while(继续条件){ | ||
> 循环体代码; | ||
> } |
//打印1-10序列
int counter = 1;
while(counter <= 10){
System.out.print(counter + " ");
counter++;
}
//输出:1 2 3 4 5 6 7 8 9 10
典型应用场景:不确定循环次数的操作
4.2.计数循环
标准语法:
for(初始值; 循环条件; 步进表达式){
循环代码块;
}
//计算1-100累加和
int total = 0;
for(int i = 1; i <= 100; i++){
total += i;
}
System.out.println("总和:" + total);
主要优势:适合已知迭代次数的场景
4.3.后验循环
语法结构:
do {
循环操作;
} while(循环条件);
//至少执行一次的验证
int input;
do {
System.out.print("请输入正数:");
input = scanner.nextInt();
} while(input <= 0);
特殊用途:必须执行一次的场景
5.循环结构特性比较
循环类型 | 最佳场景 | 执行特点 | 典型应用 |
---|---|---|---|
for |
明确迭代次数 | 先检测后执行 | 数组遍历 |
while |
条件驱动 | 先检测后执行 | 输入验证 |
do-while |
必须执行一次 | 先执行后检测 | 用户交互 |
## 6.数据交互处理 | |||
### 6.1.数据接收 | |||
标准输入流程: | |||
1. 导入工具包:import java.util.Scanner; | |||
2. 创建扫描器实例 | |||
3. 读取用户输入 |
Scanner inputReader = new Scanner(System.in);
System.out.print("请输入姓名:");
String name = inputReader.nextLine();
System.out.println("欢迎," + name);
6.2.信息展示
输出方式对比:
System.out.println("自动换行输出");
System.out.print("同行输出");
System.out.printf("格式化输出:%d", 100);
7.数字竞猜游戏
游戏演示:
成功场景:
实现代码:
import java.util.Random;
import java.util.Scanner;
public class NumberGame {
public static void main(String[] args) {
Random rand = new Random();
int secretNumber = rand.nextInt(100) + 1;
int attempts = 10;
while(attempts > 0){
System.out.print("猜数字(1-100):");
int guess = new Scanner(System.in).nextInt();
if(guess == secretNumber){
System.out.println("恭喜猜中!");
return;
} else if(guess < secretNumber){
System.out.println("猜小了");
} else {
System.out.println("猜大了");
}
attempts--;
}
System.out.println("机会用尽,正确数字是:" + secretNumber);
}
}