学习目标
1. Java程序中逻辑控制语句的运用

2. Java输入与输出的实现方式
3. 独立完成综合案例的开发实战
摘要
本文系统梳理Java程序设计的三大基本结构,核心知识要点如下:
1. 顺序结构:代码按书写顺序逐行执行,如同流水账般自上而下,简单直接无需赘述。
2. 选择结构:可分为两条路径——if-else属于“条件判断”,依据布尔表达式选择不同分支,语法为 if(条件){…}else if(条件){…}else{…},适合范围判断如成绩评级、闰年判定;switch则是“查表跳转”,直接匹配选项值,语法为 switch(表达式){case 值: … break; default: …},适合等值判断如星期、季节,注意break防止case穿透。
3. 循环结构:for用于明确循环次数的场景,语法 for(起点;终点;步进){…},好比做100个俯卧撑;while用于不确定循环次数的场景,语法 while(条件){…},好比吃到饱为止。核心记忆:顺序为默认,选择靠if/switch,重复用for/while。三大结构灵活组合,即可解决诸如“找出水仙花数”之类的实际问题。
先直观认识一下什么是程序逻辑控制——本质上就是让代码按预期方式运行,核心包含三大结构:顺序、选择、循环。
1.顺序结构
顾名思义,代码按照书写顺序一条一条依次执行。
System.out.println("aaa");
System.out.println("bbb");
System.out.println("ccc");
//
运⾏结果如下
aaa
bbb
ccc
如果调整代码顺序,执行结果也会随之变化:
System.out.println("aaa");
System.out.println("ccc");
System.out.println("bbb");
//
运⾏结果如下
aaa
ccc
bbb
顺序结构非常直观,只需记住代码执行顺序与书写顺序一致即可。
2.分支结构
分支结构可以理解为程序中的“选择题”,让代码根据不同条件走不同的路径。
2.1 if-else
想象一个场景:走到岔路口,肚子饿了就去吃饭,累了就回家睡觉,否则继续散步。程序也是如此,if-else让代码在不同情况下执行不同逻辑。
if-else语法格式:
if(布尔表达式1){
// 满足表达式1执行此块
}else if(布尔表达式2){
// 满足表达式2执行此块
}else{
// 都不满足执行此块
}
注意:else if和else并非必需,具体取决于实际需求。
来看一个生活案例:小明考试,90分以上奖励麦当劳,80~90分奖励鸡腿,80分以下则接受惩罚。
int score = 79;
if(score > 90){
System.out.println("奖励一顿麦当劳!!!");
}else if(score<=90&&score>=80){
System.out.println("奖励一个大鸡腿!");
}else{
System.out.println("挨⼤嘴巴⼦!!!");
}
// 可怜的小明没吃上麦当劳也没鸡腿,只挨了一顿大嘴巴子……
综合案例:判断闰年
闰年规则:能被4整除且不能被100整除,或者能被400整除。
int year = 2000;
if ((year % 4 == 0&&year % 100 != 0)||year % 400 == 0) {
System.out.println("是闰年");
} else {
System.out.println("不是闰年");
}
2.2 switch语句
认识switch之前,先理解break——字面意思是“打破”,在循环中用于跳出当前循环并执行后续代码。
想象另一个场景:去快餐店点餐。
if-else方式:站在收银台前逐个询问“是汉堡吗?不是?那薯条吗?不是?……”
switch方式:直接看菜单,按编号点单,“我要3号套餐!”→直接取餐,干净利落。
switch就是程序中的“查表跳转”,直接匹配选项值,效率更高。
基本语法格式:
switch(表达式) {
case 值1:
// 变量等于值1时执行的代码
break;
case 值2:
// 变量等于值2时执行的代码
break;
default:
// 都不匹配时执行的代码
break;
}
执行流程:
- 计算表达式值;
- 匹配对应case,执行代码块;
- 遇到break跳出,否则发生case穿透;
- 若没有匹配项,执行default。
生活案例:星期几上什么课
int weekDay = 3; // 假设星期三
switch(weekDay) {
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("周末啦,放假休息!");
break;
}
// 输出:星期三:上化学和生物
综合练习:四季判断
根据月份判断所属季节。
int month = 7;
switch(month) {
case 3:
case 4:
case 5:
System.out.println("春季:春暖花开");
break;
case 6:
case 7:
case 8:
System.out.println("夏季:夏日炎炎");
break;
case 9:
case 10:
case 11:
System.out.println("秋季:秋高气爽");
break;
case 12:
case 1:
case 2:
System.out.println("冬季:白雪皑皑");
break;
default:
System.out.println("输入的月份有误!");
break;
}
// 输出:夏季:夏日炎炎
2.3 循环结构:for 和 while
通过对比来理解for和while的区别。想象做10个俯卧撑:
for循环:心里默念1,2,3…10,数到10自动停止;
while循环:做到没力气就停,不确定具体做多少个。
基本语法格式
for循环(明确循环次数):
for(起点; 终点条件; 每步动作) {
// 重复执行的代码
}
while循环(不确定次数):
while(条件成立) {
// 重复执行的代码
}
生活案例1:每天做100个俯卧撑
for(int i = 1; i <= 100; i++) {
System.out.println("第" + i + "个俯卧撑");
}
// 做满100个结束
生活案例2:吃包子,吃到撑为止
int 饱度 = 0;
while(饱度 < 10) { // 饱度小于10继续吃
System.out.println("再吃一个包子");
饱度++; // 每吃一个饱度+1
}
System.out.println("吃饱了!");
看完这两个案例,大致能看出for和while在代码实现上的差异。那什么时候该用for,什么时候用while?下面这张表格帮你理清思路:
| 场景 | for循环 | while循环 |
|---|---|---|
| 明确知道循环次数 | 首选 | 可以选 |
| 不确定循环次数(读文件等) | 不太适合 | 首选 |
| 一般计数任务 | 更简洁 | 代码稍复杂 |
通过以上内容,你已经掌握了三大基本结构——顺序、选择、循环。好比练武学会了基本拳法,但真正的功夫在于组合运用。下面,用刚学的三大结构解决一个经典问题:
求出0~999之间的所有水仙花数并输出。
水仙花数是指一个三位数,其各位数字的立方和等于该数本身,例如153 = 1³ + 5³ + 3³。
public class NarcissusNumbers {
public static void main(String[] args) {
System.out.println("0~999之间的水仙花数有:");
// 循环:从100到999(三位数)
for (int num = 100; num <= 999; num++) {
// 提取各位数字
int ge = num % 10; // 个位:153 % 10 = 3
int shi = num / 10 % 10; // 十位:153 / 10 = 15,15 % 10 = 5
int bai = num / 100; // 百位:153 / 100 = 1
// 计算立方和
int sum = ge*ge*ge + shi*shi*shi + bai*bai*bai;
// 判断:如果等于原数,就是水仙花数
if (sum == num) {
System.out.println(num);
}
}
}
}
总结
- 顺序结构:代码从上至下,一句一句按顺序执行,如同流水账。
- 选择结构:程序遇到岔路口,根据不同条件走不同分支,类似做选择题。
- 循环结构:重复执行某件事,直到满足条件为止,好比跳绳数数。
核心记住:顺序是默认,选择靠if,重复用循环!
