# if-then 和 if-then-else 语句

> 原文： [https://docs.oracle.com/javase/tutorial/java/nutsandbolts/if.html](https://docs.oracle.com/javase/tutorial/java/nutsandbolts/if.html)

## `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`](examples/IfElseDemo.java) 根据考试成绩的值分配成绩：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 &gt;= 70`和`76 &gt;= 60`。但是，一旦满足条件，则执行适当的语句`(grade = 'C';)`并且不评估剩余条件。