文档

Java™ 教程-Java Tutorials 中文版
if-then 和 if-then-else 语句
Trail: Learning the Java Language
Lesson: Language Basics
Section: Control Flow Statements

if-then 和 if-then-else 语句

if-then 语句

if-then 语句是所有控制流程语句中最基本的。它告诉程序只在特定的测试结果为 true 时才会执行某段代码。例如,Bicycle 类别只有当自行车已经运动时才允许制动器降低自行车的速度。applyBrakes 方法的一种可能实现方式如下:

void applyBrakes() {
    // the "if" clause: bicycle must be moving
    if (isMoving){ 
        // the "then" clause: decrease current speed
        currentSpeed--;
    }
}

如果此测试计算为 false(表示自行车不在运动中),则控制跳转到 if-then 语句的末尾。

此外,如果“then”子句只包含一个语句,则左大括号和右大括号是可选的:

void applyBrakes() {
    // same as above, but without braces 
    if (isMoving)
        currentSpeed--;
}

决定何时省略大括号是个人品味的问题。省略它们会使代码变得更脆弱。如果第二个语句后来被添加到 "then" 子句中,常见的错误是忘记加新要求的大括号。编译器无法捕捉到这种错误;你只会得到错误的结果。

if-then-else 语句

当 "if" 子句计算为 false 时,if-then-else 语句提供执行的辅助路径。你可以在 applyBrakes 方法中使用 if-then-else 语句来采取一些行动,如果在自行车未运动时应用刹车。在这种情况下,动作是简单地打印一条错误消息,指出自行车已经停止。

void applyBrakes() {
    if (isMoving) {
        currentSpeed--;
    } else {
        System.err.println("The bicycle has already stopped!");
    } 
}

以下程序 IfElseDemo 根据考试分数的值分配等级:A 分数为 90%或以上,B 分数为 80 分%或以上,等等。


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

        int testscore = 76;
        char grade;

        if (testscore >= 90) {
            grade = 'A';
        } else if (testscore >= 80) {
            grade = 'B';
        } else if (testscore >= 70) {
            grade = 'C';
        } else if (testscore >= 60) {
            grade = 'D';
        } else {
            grade = 'F';
        }
        System.out.println("Grade = " + grade);
    }
}

程序的输出是:

    Grade = C

你可能已经注意到 testscore 的值可以满足复合语句中的多个表达式:76 >= 7076 >= 60 。但是,一旦满足条件,就会执行相应的语句 (grade = 'C';) 并且不计算其余条件。


Previous page: Control Flow Statements
Next page: The switch Statement