当前位置: 首页 > news >正文

Day4:if / else 条件判断总结

一、今日学习目标

Day4 主要学习 Java 中的条件判断语句:

  • if

  • if / else

  • if / else if / else

  • 多个独立 if 的使用场景

  • 字符串比较 .equals()

  • 使用 AI 优化 if 结构

今日完成的练习:

  • 成绩分级系统:A / B / C / D

  • 年龄票价判断

  • 正负数和奇偶判断

  • 登录判断


二、if / else 的核心作用

程序默认是从上往下一行一行执行的。

但是实际开发中,经常需要根据不同条件执行不同代码。

例如:

如果成绩 >= 90
   输出 A
否则如果成绩 >= 80
   输出 B
否则如果成绩 >= 60
   输出 C
否则:
   输出 D

这种“根据条件选择执行路线”的逻辑,就需要使用 if / else


三、if 的基本格式

if (条件) {
   // 条件成立时执行这里的代码
}

示例:

int score = 95;

if (score >= 90) {
   System.out.println("优秀");
}

含义:

如果 score 大于等于 90,就输出“优秀”。
如果条件不成立,就跳过 if 里面的代码。

四、if / else 的格式

if (条件) {
   // 条件成立时执行
} else {
   // 条件不成立时执行
}

示例:

int age = 18;

if (age >= 18) {
   System.out.println("成年人");
} else {
   System.out.println("未成年人");
}

含义:

如果 age >= 18 成立,输出“成年人”。
否则输出“未成年人”。

五、if / else if / else 的格式

当有多个条件需要判断,并且最终结果只能选择其中一个时,使用:

if (条件1) {
   // 条件1成立时执行
} else if (条件2) {
   // 条件1不成立,条件2成立时执行
} else if (条件3) {
   // 条件1、条件2都不成立,条件3成立时执行
} else {
   // 上面条件都不成立时执行
}

重点:

if / else if / else 是一组互斥判断。
只要前面有一个条件成立,后面的条件就不会继续判断。

六、多个独立 if 的使用场景

多个独立 if 的格式:

if (条件1) {
// 判断第一件事
}

if (条件2) {
// 判断第二件事
}

重点:

多个独立 if 之间互不影响。
第一个 if 判断完以后,程序还会继续判断第二个 if。

适合场景:

需要同时判断多个不同维度的问题。

例如:

一个数字既要判断:正数 / 负数 / 零
还要判断:奇数 / 偶数

这两个结果都要输出,所以应该写成两组判断。


七、今日重点区别:else if 和多个 if

1. if / else if / else

适合:结果只能选一个。

例如成绩等级:

A / B / C / D 只能输出其中一个。

所以使用:

if (...) {

} else if (...) {

} else if (...) {

} else {

}

2. 多个独立 if

适合:多个结果都要判断。

例如:

5 是正数,同时也是奇数。
-8 是负数,同时也是偶数。
0 是零,同时也是偶数。

所以可以写成:

if (...) {
// 判断正负零
}

if (...) {
// 判断奇偶
}

八、常用判断符号总结

符号含义示例
> 大于 score > 90
< 小于 age < 18
>= 大于等于 score >= 60
<= 小于等于 score <= 100
== 判断基本类型是否相等 num == 0
!= 不等于 num != 0
&& 并且,两个条件都要成立 score >= 90 && score <= 100
|| 或者,两个条件满足一个即可 score < 0 || score > 100

九、重要知识点:字符串比较不能用 ==

判断字符串内容是否相等,要使用 .equals()

正确写法:

name.equals("admin")

错误写法:

name == "admin"

原因:

== 更适合判断基本数据类型的值是否相等。
例如 int、double、char、boolean 等。

String 是引用类型。
判断字符串内容是否一样,要使用 equals() 方法。

十、练习代码 1:成绩分级系统

文件名:IfelseDemo.java

功能:

输入一个成绩 score。
根据成绩输出 A / B / C / D。
如果成绩小于 0 或大于 100,输出“成绩不合法”。
package Day1to30;

import java.util.Scanner;

public class IfelseDemo {
public static void main(String[] args) {

// 创建 Scanner 对象,用于接收键盘输入
// System.in 表示从控制台输入内容
Scanner sc = new Scanner(System.in);

// 提示用户输入成绩
System.out.println("请输入一个成绩:");

// 使用 nextInt() 接收用户输入的整数
// 这里把输入的成绩保存到 int 类型变量 score 中
int score = sc.nextInt();

// 第一层先判断成绩是否合法
// score < 0:成绩不能小于 0
// score > 100:成绩不能大于 100
// || 表示“或者”,两个条件只要有一个成立,整体条件就成立
if (score < 0 || score > 100) {
System.out.println("成绩不合法");

// 走到这里,说明上面的非法成绩判断已经不成立
// 也就是说,score 一定在 0 到 100 之间
// 所以后面不需要再写 score <= 100
} else if (score >= 90) {
System.out.println("等级:A");

// 能走到这里,说明 score >= 90 已经不成立
// 所以这里只需要判断 score >= 80
// 实际范围就是:80 <= score < 90
} else if (score >= 80) {
System.out.println("等级:B");

// 能走到这里,说明 score >= 80 已经不成立
// 所以这里只需要判断 score >= 60
// 实际范围就是:60 <= score < 80
} else if (score >= 60) {
System.out.println("等级:C");

// 前面的条件都不成立
// 但 score 又是合法成绩
// 所以剩下的范围就是:0 <= score < 60
} else {
System.out.println("等级:D");
}

// 关闭 Scanner,释放资源
sc.close();
}
}

成绩分级代码重点

1. 先判断非法数据

if (score < 0 || score > 100)

这样做的好处:

先排除错误数据,后面就只处理正常成绩。
代码更清晰。

2. 为什么不用每次都写完整范围?

原始写法:

score >= 80 && score < 90

优化写法:

score >= 80

原因:

if / else if 是从上往下判断的。
如果程序能走到 score >= 80 这里,说明 score >= 90 已经失败了。
所以此时 score 一定小于 90。

十一、练习代码 2:年龄票价判断

文件名:AgeTicketDemo.java

功能:

输入年龄 age。
根据年龄输出对应票价类型。

判断规则:

年龄小于 0:年龄不合法
年龄小于 6:儿童免票
年龄小于 18:未成年人半价
年龄小于 60:成年人全价
年龄大于等于 60:老人优惠票
package Day1to30;

import java.util.Scanner;

public class AgeTicketDemo {
public static void main(String[] args) {

// 创建 Scanner 对象,用于接收控制台输入
Scanner sc = new Scanner(System.in);

// 提示用户输入年龄
System.out.println("请输入年龄:");

// 接收用户输入的整数年龄
int age = sc.nextInt();

// 先判断非法年龄
// 年龄小于 0 不符合实际情况
if (age < 0) {
System.out.println("年龄不合法");

// 能走到这里,说明 age >= 0
// 再判断是否小于 6
// 实际范围就是:0 <= age < 6
} else if (age < 6) {
System.out.println("儿童免票");

// 能走到这里,说明 age >= 6
// 再判断是否小于 18
// 实际范围就是:6 <= age < 18
} else if (age < 18) {
System.out.println("未成年人半价");

// 能走到这里,说明 age >= 18
// 再判断是否小于 60
// 实际范围就是:18 <= age < 60
} else if (age < 60) {
System.out.println("成年人全价");

// 前面的条件都不成立
// 说明 age >= 60
} else {
System.out.println("老人优惠票");
}

// 关闭 Scanner,释放资源
sc.close();
}
}

年龄判断代码重点

这类判断是从小到大判断:

if (age < 0) {

} else if (age < 6) {

} else if (age < 18) {

} else if (age < 60) {

} else {

}

重点:

因为前面的条件已经过滤掉一部分数据,后面就不用重复写下限。

例如:

else if (age < 18)

它实际表示:

age >= 6 并且 age < 18

因为 age < 6 前面已经判断失败了。


十二、练习代码 3:正负数和奇偶判断

文件名:NumberCheckDemo.java

功能:

输入一个整数 num。
判断它是正数、负数还是零。
再判断它是奇数还是偶数。
package Day1to30;

import java.util.Scanner;

public class NumberCheckDemo {
public static void main(String[] args) {

// 创建 Scanner 对象,用于接收键盘输入
Scanner sc = new Scanner(System.in);

// 提示用户输入一个整数
System.out.println("请输入一个整数:");

// 接收用户输入的整数
int num = sc.nextInt();

// 第一组判断:判断正数、负数、零
// 这一组判断的结果只能是其中一个
// 所以使用 if / else if / else
if (num > 0) {
System.out.println("正数");
} else if (num < 0) {
System.out.println("负数");
} else {
System.out.println("零");
}

// 第二组判断:判断奇数、偶数
// 这里使用新的 if,是因为奇偶判断和上面的正负判断是两件事
// 程序需要先输出正负零,再继续输出奇偶

// % 是取余运算符
// num % 2 表示 num 除以 2 之后的余数
// 如果余数是 0,说明可以被 2 整除,就是偶数
if (num % 2 == 0) {
System.out.println("偶数");
} else {
System.out.println("奇数");
}

// 关闭 Scanner,释放资源
sc.close();
}
}

正负数和奇偶判断代码重点

这题要特别注意:

正负零判断 和 奇偶判断 是两个不同维度。

所以代码应该写成两组:

if (num > 0) {
System.out.println("正数");
} else if (num < 0) {
System.out.println("负数");
} else {
System.out.println("零");
}

if (num % 2 == 0) {
System.out.println("偶数");
} else {
System.out.println("奇数");
}

原因:

一个数既有正负零属性,也有奇偶属性。
这两个结果都要输出。

例如:

5:正数、奇数
-8:负数、偶数
0:零、偶数

十三、练习代码 4:登录判断

文件名:LoginDemo.java

功能:

输入用户名和密码。
根据用户名和密码判断登录结果。

规则:

用户名:admin
密码:123456

判断结果:

用户名和密码都正确:登录成功
用户名正确,密码错误:密码错误
用户名错误:用户名不存在

版本一:基础版

package Day1to30;

import java.util.Scanner;

public class LoginDemo {
public static void main(String[] args) {

// 创建 Scanner 对象,用于接收键盘输入
Scanner sc = new Scanner(System.in);

// 提示用户输入用户名
System.out.println("请输入用户名:");

// 使用 next() 接收字符串
// name 用来保存用户输入的用户名
String name = sc.next();

// 提示用户输入密码
System.out.println("请输入密码:");

// pwd 用来保存用户输入的密码
// 这里密码虽然是数字形式,但是用 String 保存更合适
// 因为密码通常不参与数学计算
String pwd = sc.next();

// 判断用户名和密码是否都正确
// && 表示“并且”
// 左右两个条件都成立,整体条件才成立
// 字符串内容比较要使用 equals(),不能使用 ==
if (name.equals("admin") && pwd.equals("123456")) {
System.out.println("登录成功");

// 能走到这里,说明上面的“用户名和密码都正确”不成立
// 如果用户名仍然等于 admin,说明用户名正确,但是密码错误
} else if (name.equals("admin")) {
System.out.println("密码错误");

// 如果用户名不是 admin,就直接提示用户名不存在
} else {
System.out.println("用户名不存在");
}

// 关闭 Scanner,释放资源
sc.close();
}
}

版本二:AI 优化版

优化目标:

减少重复判断,让 if 条件更像人话,更容易阅读。
package Day1to30;

import java.util.Scanner;

public class LoginDemo {
public static void main(String[] args) {

// 创建 Scanner 对象,用于接收键盘输入
Scanner sc = new Scanner(System.in);

// 输入用户名
System.out.println("请输入用户名:");
String name = sc.next();

// 输入密码
System.out.println("请输入密码:");
String pwd = sc.next();

// 把“用户名是否正确”的判断结果保存到 boolean 变量中
// boolean 类型只有两个值:true 或 false
// 如果 name 的内容等于 admin,isUsernameCorrect 就是 true
// 否则就是 false
boolean isUsernameCorrect = name.equals("admin");

// 把“密码是否正确”的判断结果保存到 boolean 变量中
// 如果 pwd 的内容等于 123456,isPasswordCorrect 就是 true
// 否则就是 false
boolean isPasswordCorrect = pwd.equals("123456");

// 这里的判断就更清晰:
// 如果用户名正确,并且密码正确,就登录成功
if (isUsernameCorrect && isPasswordCorrect) {
System.out.println("登录成功");

// 如果用户名正确,但是没有进入上面的登录成功
// 说明密码一定是错误的
} else if (isUsernameCorrect) {
System.out.println("密码错误");

// 如果用户名不正确,就提示用户名不存在
} else {
System.out.println("用户名不存在");
}

// 关闭 Scanner,释放资源
sc.close();
}
}

登录判断代码重点

1. 字符串比较使用 equals()

正确:

name.equals("admin")

错误:

name == "admin"

原因:

String 是引用类型。
判断字符串内容是否相等,使用 equals()。

2. && 表示并且

name.equals("admin") && pwd.equals("123456")

含义:

用户名等于 admin,并且密码等于 123456。
两个条件都成立,整体才成立。

3. boolean 可以保存判断结果

boolean isUsernameCorrect = name.equals("admin");
boolean isPasswordCorrect = pwd.equals("123456");

好处:

让代码更清晰。
减少重复判断。
以后条件复杂时,更容易维护。

十四、今日常见错误总结

错误 1:非法成绩判断后,又继续判断等级

错误写法:

if (score < 0 || score > 100) {
System.out.println("成绩不合法");
}

if (score >= 90) {
System.out.println("等级:A");
}

问题:

两个 if 是独立的。
第一个 if 判断完,第二个 if 还会继续执行。

例如输入:

101

可能输出:

成绩不合法
等级:A

正确写法:

if (score < 0 || score > 100) {
System.out.println("成绩不合法");
} else if (score >= 90) {
System.out.println("等级:A");
}

错误 2:字符串使用 == 比较

错误写法:

if (name == "admin") {
System.out.println("用户名正确");
}

正确写法:

if (name.equals("admin")) {
System.out.println("用户名正确");
}

错误 3:忘记关闭 Scanner

建议每个程序最后加上:

sc.close();

说明:

Scanner 用完后关闭,是一种良好的代码习惯。
小练习中不写通常也能运行,但建议养成习惯。

十五、Day4 最终总结

今天最重要的一句话:

如果结果只能选一个,用 if / else if / else。
如果要判断多个不同事情,可以写多个独立 if。

例如:

成绩等级只能是 A / B / C / D 其中一个,所以用 if / else if / else。

数字既可以是正数,又可以是奇数,所以正负判断和奇偶判断要分开写。

今日完成情况

[x] 学:if / else
[x] 写:成绩分级系统(A/B/C/D)
[x] AI:优化 if 结构
[x] 练习:年龄票价判断
[x] 练习:正负数和奇偶判断
[x] 练习:登录判断

今日建议复习题

题 1

为什么下面代码会有问题?

if (score < 0 || score > 100) {
System.out.println("成绩不合法");
}
if (score >= 90) {
System.out.println("等级:A");
}

答案:

因为这是两个独立 if。
第一个 if 执行完以后,第二个 if 还会继续判断。
应该把第二个 if 改成 else if。

题 2

字符串判断用户名是否等于 admin,应该怎么写?

答案:

name.equals("admin")

题 3

判断一个数字是否是偶数,应该怎么写?

答案:

num % 2 == 0

题 4

&&|| 有什么区别?

答案:

&& 表示并且,两个条件都成立,整体才成立。
|| 表示或者,两个条件只要有一个成立,整体就成立。
http://www.jsqmd.com/news/1064894/

相关文章:

  • 强力开源AutoRemesher:解决复杂3D网格自动重拓扑难题
  • AI大模型CUDA详解(原理+架构+流程)
  • (2026最新)内江防水补漏正规公司甄选推荐:漏水检测维修-暗管漏水精准定位检测漏水点-卫生间/厨房/屋顶/阳台/渗漏水维修-本地人必选的正规测漏公司 - 即刻修防水
  • 2026年青岛股权代持法律服务市场解析:专业力量深度盘点 - 品牌鉴赏官2026
  • (2026最新)北海防水补漏正规公司甄选推荐:漏水检测维修-暗管漏水精准定位检测漏水点-卫生间/厨房/屋顶/阳台/渗漏水维修-本地人必选的正规测漏公司 - 即刻修防水
  • 配电网鲁棒动态运行边界:应对新能源不确定性的灵活性量化方法
  • AI‘演你’真相:提示工程失效的四大剧本与五层抗扰协议
  • 2026韶关防水补漏避坑指南:卫生间/厨房/阳台/屋顶/地下室漏水检测维修全攻略,正规施工+透明报价+口碑榜靠谱服务商推荐 - 安佳防水
  • DeepSeek Harness 部门急缺人才,崔添翼直聘三类岗位,速来!
  • 2026年OpenAI接口聚合站全维度实测排名 面向开发者与企业的权威选型实用参考指南
  • Akagi麻将AI助手:终极免费工具如何快速提升你的麻将水平?
  • CapSeal架构:基于能力密封实现AI代理间安全秘密共享
  • Jellyfin桌面客户端:开源跨平台媒体中心的专业音频直通解决方案
  • (2026最新)兰州防水补漏正规公司甄选推荐:漏水检测维修-暗管漏水精准定位检测漏水点-卫生间/厨房/屋顶/阳台/渗漏水维修-本地人必选的正规测漏公司 - 即刻修防水
  • LLM Agent 6大规划范式,架构师总动员,实现架构转型,再无中年危机!
  • E-Hentai下载器:如何高效批量下载画廊资源?
  • 2026鞍山防水补漏避坑指南:卫生间/厨房/阳台/屋顶/地下室漏水检测维修全攻略,正规施工+透明报价+口碑榜靠谱服务商推荐 - 安佳防水
  • QoderWork 的 49 元订阅,2000 积分到底能做多少工作? AI Agent 编程到底贵不贵?
  • 游戏产业DDoS与CC攻击的体系化治理路径
  • 【小白向】新手友好部署包,虾壳云一键部署 OpenClaw v2.7.9 不用调试复杂环境(最新安装包)
  • Windows终极优化神器:3步搞定系统配置与软件安装的完整指南
  • 如何快速掌握ComfyUI:50个中文工作流完整指南
  • 2026年更新:寻找优质义乌合金挂件供应商,为何行业目光聚焦于此? - 品牌鉴赏官2026
  • 分布式图Transformer训练:自适应并行与稀疏计算优化实践
  • 2026年现阶段,佛山地区优秀的机械设计厂家如何选择? - 品牌鉴赏官2026
  • 三步搞定B站视频转文字:智能高效的免费开源工具终极指南
  • (2026最新)包头防水补漏正规公司甄选推荐:漏水检测维修-暗管漏水精准定位检测漏水点-卫生间/厨房/屋顶/阳台/渗漏水维修-本地人必选的正规测漏公司 - 即刻修防水
  • DNA三链置换动力学陷阱的可视化分析:从分子模拟到交互探索
  • 嵌入式实时车辆轨迹预测:从YOLO、ByteTrack到TensorRT的EdgeVTP实战
  • 5个步骤掌握MangoHud:Linux游戏性能监控的终极指南