Java 学习笔记 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
` `

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

判断字符串内容是否相等,要使用 .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

&&|| 有什么区别?

答案:

&& 表示并且,两个条件都成立,整体才成立。
|| 表示或者,两个条件只要有一个成立,整体就成立。
posted @ 2026-06-23 01:55  忧桑の民工  阅读(24)  评论(0)    收藏  举报