# Kotlin 程序：交换两个数字

> 原文： [https://www.programiz.com/kotlin-programming/examples/swap-two-numbers](https://www.programiz.com/kotlin-programming/examples/swap-two-numbers)

#### 在此程序中，您将学到两种在 Kotlin 中交换两个数字的技术。 第一个使用临时变量进行交换，而第二个不使用任何临时变量。

## 示例 1：使用临时变量交换两个数字

```kt
fun main(args: Array<String>) {

    var first = 1.20f
    var second = 2.45f

    println("--Before swap--")
    println("First number = $first")
    println("Second number = $second")

    // Value of first is assigned to temporary
    val temporary = first

    // Value of second is assigned to first
    first = second

    // Value of temporary (which contains the initial value of first) is assigned to second
    second = temporary

    println("--After swap--")
    println("First number = $first")
    println("Second number = $second")
}
```

运行该程序时，输出为：

```kt
--Before swap--
First number = 1.2
Second number = 2.45
--After swap--
First number = 2.45
Second number = 1.2
```

在上述程序中，将要交换的两个数字`1.20f`和`2.45f`存储在变量中：分别为`first`和`second`。

交换之前使用`println()`打印变量，以在交换完成后清楚地看到结果。

*   首先，将`first`的值存储在变量`temporary`（`temporary = 1.20f`）中。
*   然后，将`second`的值存储在`first`（`first = 2.45f`）中。
*   并且，最终将`temporary`的值存储在`second`（`second = 1.20f`）中。

这样就完成了交换过程，并且变量被打印在屏幕上。

请记住，`temporary`的唯一用途是在交换之前先保持`first`的值。 您也可以不使用`temporary`交换号码。

* * *

## 示例 2：交换两个数字而不使用临时变量

```kt
fun main(args: Array<String>) {

    var first = 12.0f
    var second = 24.5f

    println("--Before swap--")
    println("First number = $first")
    println("Second number = $second")

    first = first - second
    second = first + second
    first = second - first

    println("--After swap--")
    println("First number = $first")
    println("Second number = $second")
}
```

When you run the program, the output will be:

```kt
--Before swap--
First number = 12.0
Second number = 24.5
--After swap--
First number = 24.5
Second number = 12.0
```

在上面的程序中，我们使用简单的数学来交换数字，而不是使用临时变量。

对于该操作，`(first - second)`的存储很重要。 首先将其存储在变量``中。

```kt
first = first - second;
first = 12.0f - 24.5f
```

然后，我们只需将这个数 - 之前计算的`first`（`12.0f - 24.5f`）**加上**`second`（`24.5f`）即可交换该数字。

```kt
second = first + second;
second = (12.0f - 24.5f) + 24.5f = 12.0f
```

现在，`second`保持`12.0f`（最初是第一值）。 因此，我们从交换的`second`（`12.0f`）中减去计算出的`first`（`12.0f - 24.5f`），以获得其他交换数。

```kt
first = second - first;
first = 12.0f - (12.0f - 24.5f) = 24.5f
```

交换的号码使用`println()`打印在屏幕上。

* * *

这是 Java 中的等效代码：[在 Java 中交换两个数字](/java-programming/examples/swap-two-numbers "Java Program to Swap Two numbers") 