Java条件判断:if/else让程序学会“选择”

avatar
随风IP属地:上海
02026-02-09:21:50:42字数 5627阅读 0

零基础友好|生活化决策树|避坑指南|附可运行小游戏
承接《变量与循环》—— 今天教你赋予代码“思考力”,让它根据情况做决定!


🌱 为什么需要条件判断?—— 程序的“大脑”觉醒时刻

想象这些场景:
☕️ 咖啡机:检测到“杯子放好”才出咖啡
🚦 红绿灯:根据时间切换“红/黄/绿”
📱 手机:电量<20%时弹出“低电量提醒”

条件判断 = 程序的决策能力
→ 让代码从“死板执行”升级为 “智能响应”
if/else 就是Java的“如果...就..."语言

💡 核心公式
如果(条件成立)→ 做A事;否则 → 做B事
掌握它,你的程序才真正“活”起来!


📜 一、if/else 语法全家福(附生活对照表)

语法结构适用场景生活例子代码骨架
if单条件判断“如果下雨,带伞”if(下雨) 带伞;
if-else二选一“如果及格,庆祝;否则,复习”if(及格) 庆祝; else 复习;
if-else if-else多条件分支成绩评级(A/B/C/D)if(>=90)A; else if(>=80)B; ...
嵌套if复杂逻辑“如果周末且晴天,去公园”if(周末){ if(晴天) 去公园; }

🔍 二、实战代码库(复制即运行!)

🌰 场景1:成绩评级系统(if-else if 经典应用)

public class GradeEvaluator {
    public static void main(String[] args) {
        int score = 85; // 尝试修改这个分数!
        
        if (score >= 90) {
            System.out.println("🏆 优秀!(A)");
        } else if (score >= 80) {
            System.out.println("👍 良好!(B)");
        } else if (score >= 60) {
            System.out.println("✅ 及格!(C)");
        } else {
            System.out.println("💪 加油!需要努力(D)");
        }
        
        // 附加提示:结合三元运算符
        String passStatus = (score >= 60) ? "通过" : "未通过";
        System.out.println("📌 当前状态:" + passStatus);
    }
}

修改score测试
score=95 → 🏆 优秀!(A)
score=59 → 💪 加油!需要努力(D)


🌰 场景2:智能天气助手(嵌套if实战)

public class WeatherAdvisor {
    public static void main(String[] args) {
        boolean isRainy = true;
        int temperature = 15; // 摄氏度
        
        if (isRainy) {
            System.out.println("☔ 建议:带伞出门!");
            if (temperature < 10) {
                System.out.println("🧥 额外提醒:加件外套,今天又湿又冷!");
            }
        } else {
            if (temperature > 30) {
                System.out.println("☀️ 建议:防晒+补水,高温预警!");
            } else if (temperature > 20) {
                System.out.println("🌤️ 建议:短袖出行,舒适宜人~");
            } else {
                System.out.println("🧥 建议:薄外套,微凉注意保暖");
            }
        }
    }
}

💡 关键理解

  • 嵌套if让逻辑层层细化
  • 缩进是生命线!(IDE会自动格式化,养成好习惯)

🌰 场景3:三元运算符——if/else的“极简版”

// 传统写法
int age = 18;
String status;
if (age >= 18) {
    status = "成年人";
} else {
    status = "未成年人";
}

// 三元运算符(一行搞定!)
String status2 = (age >= 18) ? "成年人" : "未成年人";
System.out.println("身份判定:" + status2); // 输出:成年人

// 实战:判断奇偶数
int num = 7;
System.out.println(num + "是" + (num % 2 == 0 ? "偶数" : "奇数")); // 输出:7是奇数

使用原则

  • 仅用于简单赋值(逻辑复杂时用if/else更清晰)
  • 格式:条件 ? 真值 : 假值

🔄 三、switch 语句:多分支的优雅解法(Java 14+ 增强版)

传统switch(Java 12前)

String day = "Monday";
switch (day) {
    case "Monday":
        System.out.println("💪 周一:加油开工!");
        break; // 必须!否则会“穿透”到下一条
    case "Friday":
        System.out.println("🎉 周五:周末倒计时!");
        break;
    default:
        System.out.println("📚 " + day + ":认真工作学习");
}

✨ Java 14+ 增强switch(推荐!更安全简洁)

int month = 12;
String season = switch (month) {
    case 12, 1, 2 -> "❄️ 冬季";
    case 3, 4, 5  -> "🌱 春季";
    case 6, 7, 8  -> "☀️ 夏季";
    case 9, 10, 11 -> "🍂 秋季";
    default -> "❓ 无效月份";
};
System.out.println("当前季节:" + season); // 输出:❄️ 冬季

优势

  • 无需break,避免穿透错误
  • 支持箭头语法 ->,逻辑更清晰
  • 可直接返回值(如上例赋值给season)

📌 新手建议

  • 分支≤3个 → 用if-else
  • 分支≥4个且条件为等值判断(如数字/字符串)→ 用switch
  • Java 14+ 优先用增强switch

🆘 四、血泪避坑指南(90%新手栽过跟头!)

陷阱错误代码正确写法原因解析
赋值 vs 比较if (score = 90)if (score == 90)=是赋值,==才是比较!编译报错
浮点数比较if (0.1 + 0.2 == 0.3)Math.abs(a-b) < 1e-6浮点精度误差,永远别用==比小数
字符串比较if (name == "张三")if ("张三".equals(name))==比地址,equals比内容
遗漏大括号if (x>0) System.out.println("正"); x++;if (x>0) { ... }无大括号时,if只控制下一行!
条件永真/永假if (x > 0 && x < 0)检查逻辑矛盾编译器可能警告,但逻辑错误难发现

💡 黄金法则
1️⃣ 字符串比较永远用 .equals()
2️⃣ 浮点数比较用范围判断
3️⃣ if后哪怕只有一行,也加 {}(团队规范+防坑)


🎮 五、综合实战:石头剪刀布游戏(融合Scanner+随机数+条件判断)

import java.util.Scanner;
import java.util.Random;

public class RockPaperScissors {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        Random rand = new Random();
        
        System.out.println("🎮 石头剪刀布大战!输入:1=石头 2=剪刀 3=布");
        System.out.print("你的选择:");
        int user = sc.nextInt();
        
        // 电脑随机出拳(1-3)
        int computer = rand.nextInt(3) + 1;
        String[] choices = {"", "石头", "剪刀", "布"};
        
        System.out.println("你出:" + choices[user] + " | 电脑出:" + choices[computer]);
        
        // 核心判断逻辑
        if (user == computer) {
            System.out.println("🤝 平局!再来一局?");
        } else if (
            (user == 1 && computer == 2) || // 石头赢剪刀
            (user == 2 && computer == 3) || // 剪刀赢布
            (user == 3 && computer == 1)    // 布赢石头
        ) {
            System.out.println("🎉 恭喜你赢了!");
        } else {
            System.out.println("😭 电脑获胜...");
        }
        
        sc.close();
    }
}

运行效果示例

🎮 石头剪刀布大战!输入:1=石头 2=剪刀 3=布
你的选择:1
你出:石头 | 电脑出:剪刀
🎉 恭喜你赢了!

升级挑战

  1. 用循环实现“三局两胜制”(复用上篇循环知识!)
  2. 添加输入校验(非1/2/3时提示重新输入)
  3. 统计胜/负/平局次数

📚 六、决策流程图:何时用哪种判断?

graph TD
    A[需要做选择?] -->|是| B{条件数量}
    B -->|1个条件| C[if]
    B -->|2个互斥结果| D[if-else]
    B -->|≥3个等值分支| E[switch]
    B -->|复杂逻辑嵌套| F[嵌套if + 逻辑优化]
    C --> G[执行对应代码]
    D --> G
    E --> G
    F --> G
    A -->|否| H[顺序执行]

💫 七、结语:你的程序已拥有“思考力”!

今天你解锁了:
🔹 用 if/else 实现二选一决策
🔹 用 switch 优雅处理多分支
🔹 避开字符串/浮点数比较陷阱
🔹 写出能和你“互动”的小游戏

从此,你的代码不再机械执行——它开始理解世界,做出选择!

🌱 行动三连
1️⃣ 修改石头剪刀布代码,添加“输入无效请重试”逻辑
2️⃣ 写一个“根据时间输出问候语”的程序(6-12点:早上好!)
3️⃣ 在评论区晒出你的代码 + 一句心得

下期预告:《Java方法(函数):把重复代码装进“工具箱”》
—— 教你封装逻辑、提升代码复用性,告别复制粘贴!


本文代码经JDK 21实测 | 所有示例可直接复制运行 | 遇到问题截图留言必回
✨ 代码有逻辑,成长有路径 —— 你的Java进阶伙伴 🌱
原创声明:转载需授权并保留出处 | 2024技术温暖陪伴

总资产 0
暂无其他文章

热门文章

暂无热门文章