今日目标
掌握分支结构:if 语句(单分支、双分支、多分支)和 switch 语句掌握循环结构:for 循环、while 循环、do-while 循环学会用流程控制实现简单的逻辑(如判断成绩等级、循环打印等)
一、分支结构:根据条件执行不同代码
1. if 语句(最常用)
if 语句根据 “条件是否成立”(布尔值 true/false)来决定是否执行某段代码,有三种形式:
(1)单分支:满足条件才执行
if (条件) {
// 条件为true时执行的代码
}
示例:判断一个数是否为正数
int num = 5;
if (num > 0) {
System.out.println(num + "是正数"); // 执行:5是正数
}
(2)双分支:满足条件执行 A,否则执行 B
if (条件) {
// 条件为true时执行(A)
} else {
// 条件为false时执行(B)
}
示例:判断一个数是奇数还是偶数
int num = 7;
if (num % 2 == 0) { // 除以2余数为0 → 偶数
System.out.println(num + "是偶数");
} else {
System.out.println(num + "是奇数"); // 执行:7是奇数
}
(3)多分支:多个条件依次判断,满足一个就执行对应代码
if (条件1) {
// 条件1为true时执行
} else if (条件2) {
// 条件1为false,条件2为true时执行
} else if (条件3) {
// 前面条件都为false,条件3为true时执行
} else {
// 所有条件都为false时执行(可选)
}
示例:根据分数判断等级(0-100 分)
int score = 85;
if (score >= 90 && score <= 100) {
System.out.println("优秀");
} else if (score >= 80) { // 前面已排除≥90的情况,这里实际是80-89
System.out.println("良好"); // 执行:良好
} else if (score >= 60) { // 60-79
System.out.println("及格");
} else if (score >= 0) { // 0-59
System.out.println("不及格");
} else {
System.out.println("分数无效");
}
注意:
条件必须是布尔表达式(结果为 true/false)。若代码块只有一行,大括号可以省略(但建议不省,避免出错)。多分支中,只要有一个条件满足,就会跳过后面所有判断。
{}
2. switch 语句(多值匹配)
当需要根据一个变量的 “具体值” 执行不同代码时,用 switch 比多分支 if 更简洁(适合值为整数、字符、字符串的情况)。
switch (变量) {
case 值1:
// 变量等于值1时执行
break; // 跳出switch(必须加,否则会继续执行下一个case)
case 值2:
// 变量等于值2时执行
break;
...
default:
// 变量不等于任何case值时执行(可选)
break;
}
示例:根据星期几输出对应的活动
int day = 3; // 1-7代表周一到周日
switch (day) {
case 1:
System.out.println("周一:开会");
break;
case 2:
case 3: // 多个case可以执行同一代码(周二和周三都上课)
System.out.println("上课");
break;
case 6:
case 7:
System.out.println("休息");
break;
default:
System.out.println("正常上班");
break;
}
// 输出:上课(因为day=3)
注意:
switch 后的变量类型只能是:byte、short、int、char、String(Java 7+)、枚举。的作用是跳出 switch,若省略,会从匹配的 case 开始,继续执行后面所有 case(称为 “穿透”)。
break可选,位置不限(通常放最后)。
default
二、循环结构:重复执行某段代码
当需要多次执行相同或相似的代码时(如打印 1-100 的数字),用循环可以大幅简化代码。
1. for 循环(最常用,适合已知循环次数)
格式:
for (初始化; 循环条件; 迭代) {
// 循环体(重复执行的代码)
}
初始化:循环开始前执行一次(通常定义循环变量)。循环条件:每次循环前判断,为 true 则执行循环体,否则结束循环。迭代:每次循环体执行完后执行(通常更新循环变量,如 i++)。
示例 1:打印 1-5 的数字
for (int i = 1; i <= 5; i++) {
System.out.println(i);
}
// 输出:1 2 3 4 5(每行一个)
示例 2:计算 1-100 的总和
int sum = 0;
for (int i = 1; i <= 100; i++) {
sum += i; // 累加:sum = sum + i
}
System.out.println("1-100的和:" + sum); // 输出:5050
2. while 循环(适合未知循环次数,只知道结束条件)
格式:
初始化;
while (循环条件) {
// 循环体
迭代; // 别忘了更新条件,否则可能无限循环
}
示例:计算从 1 开始累加,直到和大于 1000 时的总和
int sum = 0;
int i = 1;
while (sum <= 1000) {
sum += i;
i++;
}
System.out.println("总和首次超过1000时:" + sum); // 输出:1035(1+2+...+45=1035)
3. do-while 循环(先执行一次循环体,再判断条件)
格式:
初始化;
do {
// 循环体(至少执行一次)
迭代;
} while (循环条件); // 注意这里有分号
示例:让用户输入数字,直到输入 0 为止
Scanner scanner = new Scanner(System.in);
int num;
do {
System.out.print("请输入一个数字(输入0结束):");
num = scanner.nextInt();
System.out.println("你输入了:" + num);
} while (num != 0);
// 运行流程:先输入数字,打印,再判断是否为0,不为0就重复
三种循环的区别:
for:循环变量的作用域仅限循环内,适合次数明确的场景。while:先判断后执行,可能一次都不执行。do-while:先执行后判断,至少执行一次。
4. 循环控制:break 和 continue
:直接跳出当前循环(结束循环)。
break:跳过本次循环剩下的代码,直接进入下一次循环。
continue
示例 1:break 的使用(找到 100 以内第一个能被 13 整除的数)
for (int i = 1; i <= 100; i++) {
if (i % 13 == 0) {
System.out.println("第一个能被13整除的数:" + i); // 13
break; // 找到后立即跳出循环
}
}
示例 2:continue 的使用(打印 1-10 中的奇数)
for (int i = 1; i <= 10; i++) {
if (i % 2 == 0) {
continue; // 如果是偶数,跳过后面的打印,直接进入下一次循环
}
System.out.println(i); // 输出:1 3 5 7 9
}
三、练习
分支练习:输入一个年份,判断是否为闰年(闰年条件:能被 4 整除且不能被 100 整除,或能被 400 整除)。
循环练习:打印 100 以内所有能被 3 整除的数,每行打印 5 个。
综合练习:用循环计算斐波那契数列的前 10 项(数列规则:第 1 项 = 1,第 2 项 = 1,从第 3 项起,每项 = 前两项之和:1,1,2,3,5,8…)。
今日总结
分支结构:
if 语句:单分支(if)、双分支(if-else)、多分支(if-else if-else),适合复杂条件判断。switch 语句:适合根据变量的具体值匹配执行,注意加避免穿透。
break
循环结构:
for:适合已知循环次数(如遍历 1-100)。while:适合未知次数,先判断后执行。do-while:至少执行一次,先执行后判断。
循环控制:跳出循环,
break跳过本次循环。
continue
















暂无评论内容