原文: https://www.programiz.com/kotlin-programming/examples/swap-two-numbers

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

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

  1. fun main(args: Array<String>) {
  2. var first = 1.20f
  3. var second = 2.45f
  4. println("--Before swap--")
  5. println("First number = $first")
  6. println("Second number = $second")
  7. // Value of first is assigned to temporary
  8. val temporary = first
  9. // Value of second is assigned to first
  10. first = second
  11. // Value of temporary (which contains the initial value of first) is assigned to second
  12. second = temporary
  13. println("--After swap--")
  14. println("First number = $first")
  15. println("Second number = $second")
  16. }

运行该程序时,输出为:

  1. --Before swap--
  2. First number = 1.2
  3. Second number = 2.45
  4. --After swap--
  5. First number = 2.45
  6. Second number = 1.2

在上述程序中,将要交换的两个数字1.20f2.45f存储在变量中:分别为firstsecond

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

  • 首先,将first的值存储在变量temporarytemporary = 1.20f)中。
  • 然后,将second的值存储在firstfirst = 2.45f)中。
  • 并且,最终将temporary的值存储在secondsecond = 1.20f)中。

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

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


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

  1. fun main(args: Array<String>) {
  2. var first = 12.0f
  3. var second = 24.5f
  4. println("--Before swap--")
  5. println("First number = $first")
  6. println("Second number = $second")
  7. first = first - second
  8. second = first + second
  9. first = second - first
  10. println("--After swap--")
  11. println("First number = $first")
  12. println("Second number = $second")
  13. }

运行该程序时,输出为:

  1. --Before swap--
  2. First number = 12.0
  3. Second number = 24.5
  4. --After swap--
  5. First number = 24.5
  6. Second number = 12.0

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

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

  1. first = first - second;
  2. first = 12.0f - 24.5f

然后,我们只需将这个数 - 之前计算的first12.0f - 24.5f加上second24.5f)即可交换该数字。

  1. second = first + second;
  2. second = (12.0f - 24.5f) + 24.5f = 12.0f

现在,second保持12.0f(最初是第一值)。 因此,我们从交换的second12.0f)中减去计算出的first12.0f - 24.5f),以获得其他交换数。

  1. first = second - first;
  2. first = 12.0f - (12.0f - 24.5f) = 24.5f

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


这是 Java 中的等效代码:在 Java 中交换两个数字