条件语句

条件语句让程序根据不同情况执行不同代码,本课学习Java中的条件判断。

if语句

if语句是最基本的条件判断。

语法

JAVA
if (条件) {
    // 条件为true时执行
}

示例:简单if

JAVA
public class IfDemo {
    public static void main(String[] args) {
        int age = 20;
        
        if (age >= 18) {
            System.out.println("你是成年人");
        }
    }
}
▶ 试一试

if-else语句

当条件为false时,执行else中的代码。

语法

JAVA
if (条件) {
    // 条件为true时执行
} else {
    // 条件为false时执行
}

示例:if-else

JAVA
public class IfElseDemo {
    public static void main(String[] args) {
        int age = 15;
        
        if (age >= 18) {
            System.out.println("你是成年人");
        } else {
            System.out.println("你是未成年人");
        }
    }
}
▶ 试一试

if-else if-else语句

多个条件判断时使用。

语法

JAVA
if (条件1) {
    // 条件1为true时执行
} else if (条件2) {
    // 条件2为true时执行
} else if (条件3) {
    // 条件3为true时执行
} else {
    // 以上条件都不满足时执行
}

示例:成绩等级

JAVA
public class GradeDemo {
    public static void main(String[] args) {
        int score = 85;
        
        if (score >= 90) {
            System.out.println("优秀");
        } else if (score >= 80) {
            System.out.println("良好");
        } else if (score >= 70) {
            System.out.println("中等");
        } else if (score >= 60) {
            System.out.println("及格");
        } else {
            System.out.println("不及格");
        }
    }
}
▶ 试一试
💡 注意: 条件判断是从上到下依次执行的,一旦某个条件为true,执行对应代码后就不再判断后面的条件。

嵌套if

if语句可以嵌套使用。

示例:嵌套if

JAVA
public class NestedIfDemo {
    public static void main(String[] args) {
        int age = 25;
        boolean hasID = true;
        
        if (age >= 18) {
            if (hasID) {
                System.out.println("可以进入");
            } else {
                System.out.println("需要出示身份证");
            }
        } else {
            System.out.println("未成年人不能进入");
        }
    }
}
▶ 试一试

switch语句

switch适合对一个变量进行多个固定值的判断。

语法

JAVA
switch (变量) {
    case 值1:
        // 变量等于值1时执行
        break;
    case 值2:
        // 变量等于值2时执行
        break;
    default:
        // 以上都不匹配时执行
}

示例:星期几

JAVA
public class SwitchDemo {
    public static void main(String[] args) {
        int day = 3;
        
        switch (day) {
            case 1:
                System.out.println("星期一");
                break;
            case 2:
                System.out.println("星期二");
                break;
            case 3:
                System.out.println("星期三");
                break;
            case 4:
                System.out.println("星期四");
                break;
            case 5:
                System.out.println("星期五");
                break;
            case 6:
                System.out.println("星期六");
                break;
            case 7:
                System.out.println("星期日");
                break;
            default:
                System.out.println("无效的日期");
        }
    }
}
▶ 试一试
⚠️ break的作用: 如果不加break,程序会继续执行后面的case,这叫"穿透"。

switch穿透的应用

有时候穿透是有用的,比如判断周末:

JAVA
public class SwitchFallThrough {
    public static void main(String[] args) {
        int day = 6;
        String type;
        
        switch (day) {
            case 1:
            case 2:
            case 3:
            case 4:
            case 5:
                type = "工作日";
                break;
            case 6:
            case 7:
                type = "周末";
                break;
            default:
                type = "无效";
        }
        
        System.out.println("第" + day + "天是" + type);
    }
}

增强switch(Java 14+)

Java 14引入了增强的switch语法,更简洁:

JAVA
public class EnhancedSwitch {
    public static void main(String[] args) {
        int day = 3;
        
        String dayName = switch (day) {
            case 1 -> "星期一";
            case 2 -> "星期二";
            case 3 -> "星期三";
            case 4 -> "星期四";
            case 5 -> "星期五";
            case 6 -> "星期六";
            case 7 -> "星期日";
            default -> "无效";
        };
        
        System.out.println(dayName);  // 星期三
    }
}

Scanner获取用户输入

Scanner类可以获取用户的键盘输入。

使用步骤

JAVA
// 1. 导入Scanner类
import java.util.Scanner;

// 2. 创建Scanner对象
Scanner scanner = new Scanner(System.in);

// 3. 读取输入
int num = scanner.nextInt();      // 读取整数
double d = scanner.nextDouble();  // 读取浮点数
String s = scanner.nextLine();    // 读取一行字符串

// 4. 关闭scanner
scanner.close();

示例:用户输入判断

JAVA
import java.util.Scanner;

public class ScannerDemo {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        
        System.out.print("请输入你的年龄:");
        int age = scanner.nextInt();
        
        if (age >= 18) {
            System.out.println("你是成年人");
        } else {
            System.out.println("你是未成年人");
        }
        
        scanner.close();
    }
}
▶ 试一试

示例:简易计算器

JAVA
import java.util.Scanner;

public class Calculator {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        
        System.out.print("请输入第一个数:");
        double num1 = scanner.nextDouble();
        
        System.out.print("请输入运算符(+ - * /):");
        char operator = scanner.next().charAt(0);
        
        System.out.print("请输入第二个数:");
        double num2 = scanner.nextDouble();
        
        double result;
        
        switch (operator) {
            case '+':
                result = num1 + num2;
                System.out.println(num1 + " + " + num2 + " = " + result);
                break;
            case '-':
                result = num1 - num2;
                System.out.println(num1 + " - " + num2 + " = " + result);
                break;
            case '*':
                result = num1 * num2;
                System.out.println(num1 + " * " + num2 + " = " + result);
                break;
            case '/':
                if (num2 != 0) {
                    result = num1 / num2;
                    System.out.println(num1 + " / " + num2 + " = " + result);
                } else {
                    System.out.println("错误:除数不能为0");
                }
                break;
            default:
                System.out.println("错误:不支持的运算符");
        }
        
        scanner.close();
    }
}
▶ 试一试

❓ 常见问题

Q if条件必须用括号吗?
A 是的,条件必须用括号包裹。即使只有一条语句,也建议用花括号包裹代码块。
Q switch支持哪些类型?
A switch支持byte、short、int、char、String(Java 7+)、enum。不支持long、float、double。
Q break可以省略吗?
A 可以省略,但会导致穿透。如果故意利用穿透,需要加注释说明。

📖 小节

📝 作业

  1. 闰年判断: 输入年份,判断是否是闰年
  2. 成绩等级: 输入分数(0-100),输出等级(优秀/良好/中等/及格/不及格)
  3. 计算器: 使用Scanner实现一个简易计算器

下一课

下一课我们将学习 循环结构,让程序重复执行某些操作。

100%

🙏 帮我们做得更好

我们是刚上线的编程教程站,几个人的小团队,精力有限。页面虽经检查,难免还有疏漏——链接失效、排版错乱、内容有误、语言生硬……

如果您发现了,麻烦告诉我们,我们会在收到反馈后第一时间进行修复,再次感谢您的光临 🙏