第3周详细教程

第三章:条件分支、循环结构、数组与常见调试方法

本章进入程序逻辑核心。条件分支用于“做选择”,循环结构用于“重复执行”,数组用于“批量存储同类数据”,调试方法用于“快速定位错误”。

在 Fabric MOD 开发中,这四项能力会直接用于事件判断、掉落表处理、生物行为控制、批量方块扫描与性能优化。

Minecraft 逻辑教学封面图

本章目录

3.1 条件分支

条件判断示意图1 条件判断示意图2 条件判断示意图3

条件分支用于根据不同情况执行不同代码。最常用结构包括 `if`、`if-else`、`if-else if-else` 和 `switch`。

3.1.1 if 结构

int health = 6;
if (health <= 8) {
    System.out.println("警告:血量偏低");
}

3.1.2 if-else 结构

boolean hasKey = true;
if (hasKey) {
    System.out.println("门已开启");
} else {
    System.out.println("缺少钥匙");
}

3.1.3 多分支判断

int score = 87;
if (score >= 90) {
    System.out.println("评级:S");
} else if (score >= 75) {
    System.out.println("评级:A");
} else {
    System.out.println("评级:B");
}

3.1.4 switch 结构

int mode = 2;
switch (mode) {
    case 1:
        System.out.println("生存模式");
        break;
    case 2:
        System.out.println("创造模式");
        break;
    default:
        System.out.println("未知模式");
}

3.2 循环结构

循环用于重复执行代码块。常见循环有 `for`、`while`、`do-while`。选择依据是“是否已知循环次数”。

循环类型典型场景特点
for已知次数遍历结构紧凑
while条件驱动循环先判断后执行
do-while至少执行一次先执行后判断

3.2.1 for 示例

for (int i = 1; i <= 5; i++) {
    System.out.println("第 " + i + " 波怪物生成");
}

3.2.2 while 示例

int energy = 3;
while (energy > 0) {
    System.out.println("执行技能,剩余能量: " + energy);
    energy--;
}

3.2.3 break 与 continue

for (int i = 1; i <= 10; i++) {
    if (i == 4) {
        continue; // 跳过第4次
    }
    if (i == 8) {
        break;    // 提前结束循环
    }
    System.out.println(i);
}
循环中应保证终止条件可达,避免死循环导致程序卡住。

3.3 数组

数组物品示意图 数组遍历示意图 数组索引示意图

数组用于按顺序存储同一种类型的数据。数组下标从 `0` 开始,最后一个元素下标为 `length - 1`。

3.3.1 声明与初始化

int[] damages = {5, 8, 12, 15};
String[] mobs = {"Zombie", "Skeleton", "Creeper"};

3.3.2 访问与修改

System.out.println(damages[0]); // 5
damages[2] = 14;                 // 修改第三个元素

3.3.3 遍历数组

for (int i = 0; i < mobs.length; i++) {
    System.out.println("怪物类型: " + mobs[i]);
}

3.3.4 常见错误:数组越界

int[] nums = {1, 2, 3};
// System.out.println(nums[3]); // 越界,最大下标是2

3.4 常见调试方法

调试是开发过程中验证逻辑正确性的关键步骤。下列方法可用于快速定位问题。

3.4.1 打印变量法

int hp = 20;
System.out.println("[DEBUG] hp=" + hp);

3.4.2 分段验证法

将复杂逻辑拆成多个小步骤,每一步输出结果并验证,再进入下一步。

3.4.3 边界值检查

对 `0`、`1`、最大值、最小值、空数组等边界场景进行单独测试。

3.4.4 典型报错识别

3.5 综合示例

示例:怪物波次处理程序

public class WaveDemo {
    public static void main(String[] args) {
        String[] mobs = {"Zombie", "Skeleton", "Creeper", "Spider"};

        for (int wave = 1; wave <= 4; wave++) {
            System.out.println("=== 第 " + wave + " 波 ===");

            String mob = mobs[wave - 1];
            if (mob.equals("Creeper")) {
                System.out.println("提示:本波含爆炸单位");
            }

            for (int i = 1; i <= 3; i++) {
                System.out.println("生成 " + mob + " #" + i);
            }
        }
    }
}

该示例综合使用了数组、双层循环和条件分支,可直接迁移到刷怪逻辑的原型开发。

3.6 在 Fabric MOD 中的应用

if (playerLevel >= 10) {
    for (int i = 0; i < rewards.length; i++) {
        System.out.println("获得奖励: " + rewards[i]);
    }
} else {
    System.out.println("等级不足,无法领取奖励");
}

3.7 本章小结

完成本章后,已具备实现中等复杂度 Java 逻辑的基础能力,可进入更完整的 MOD 功能模块开发。

返回第一阶段