分支和循环是Java中解决汇总类问题的核心组合:循环遍历数据,分支判断是否纳入计算,变量累积结果。如统计及格人数与平均分需在一个循环中分别处理条件累加与无条件累加。

Java 编程中,分支和循环不是孤立的语法点,而是解决“汇总类问题”的核心组合。比如统计成绩合格人数、累加满足条件的订单金额、分类汇总用户行为数据——这类任务表面看是“算总数”,背后其实是“先判断、再累加”的典型分支+循环逻辑。
分支决定“要不要加”,循环决定“加谁”
汇总动作本质是:遍历一批数据(循环),对每个数据做条件判断(分支),符合条件就纳入计算。关键不在加法本身,而在“加或不加”的决策逻辑。
- 循环提供“逐个检查”的能力:用 for 或 while 遍历数组、列表或输入流
- 分支提供“是否计入”的判断:用 if 判断单个元素是否满足汇总条件(如 score >= 60、price > 100、status == "paid")
- 变量用于累积结果:定义一个初始为 0 的 int 或 double 类型变量,在分支内执行 += 操作
实战:统计及格人数 + 计算平均分
给定一组学生成绩,既要算有多少人及格(≥60),又要算所有人的平均分。这是两个常见汇总目标,但可在一个循环里完成:
int[] scores = {85, 92, 47, 73, 58, 96};
int passCount = 0;
int sum = 0;
for (int i = 0; i < scores.length; i++) {
sum += scores[i]; // 每次都加,无条件
if (scores[i] >= 60) { // 分支判断:只在及格时计数
passCount++;
}
}
double avg = (double) sum / scores.length;
System.out.println("及格人数:" + passCount);
System.out.println("平均分:" + avg);
注意:sum 累加放在 if 外,因为要算全部成绩总和;passCount++ 放在 if 内,体现“按条件筛选后汇总”。
立即学习“Java免费学习笔记(深入)”;
避免常见逻辑陷阱
初学者容易在汇总逻辑中混淆“判断时机”和“累加位置”,导致结果偏差:
- 把 if 写在循环外 → 只判断第一个数,漏掉其余
- 忘记初始化汇总变量(如 int total = 0; 缺少 = 0)→ 结果为随机值
- 用错比较符号:写成 if (score > 60) 会漏掉刚好 60 分的人,应为 >=
- 在 switch 中做汇总却没加 break → 条件穿透,重复累加
扩展:带分类的汇总(多分支 + 循环)
如果需要按等级分组统计(优秀/良好/及格/不及格),就把 if-else if-else 放进循环里,每组配一个计数器:
int excellent = 0, good = 0, pass = 0, fail = 0;
for (int s : scores) {
if (s >= 90) excellent++;
else if (s >= 80) good++;
else if (s >= 60) pass++;
else fail++;
}
这种结构清晰对应业务语义,也便于后续输出报表或绘图。



















