0

我通过以下程序进行了尝试,但它显示了预期 kotlin 变量的错误:

[在此处输入图像描述

4

4 回答 4

3

这不是传统的方式,但无论如何:

fun main(args: Array <String> ) {
    var a = readLine()!!.toInt()
    var b = readLine()!!.toInt()
    println("a=$a and b=$b")

    val c = a + b
    a = c - a
    b = c - b
    println("now a=$a and b=$b")
}

这是传统的方式:

fun main(args: Array <String> ) {
    var a = readLine()!!.toInt()
    var b = readLine()!!.toInt()
    println("a=$a and b=$b")

    val c = a
    a = b
    b = c
    println("now a=$a and b=$b")
}

这是只有 2 个变量的 Kotlin 方式:

fun main(args: Array <String> ) {
    var a = readLine()!!.toInt()
    var b = readLine()!!.toInt()
    println("a=$a and b=$b")

    a = b.also { b = a }
    println("now a=$a and b=$b")
}
于 2018-07-19T12:36:37.750 回答
1

我不知道,你为什么要交换值,但取决于你想要做什么,如果你不需要变量,这是另一种使用 a 的方法Pair

(readLine()!! to readLine()!!)
  .also(::println) // optional
  .map { a, b -> b to a }
  .also(::println) // optional

用于输入12打印:

(1, 2)
(2, 1)

有关进一步交换的可能性,您可能还想查看:Kotlin 中的交换函数

Enter a等为​​例:

val ask : (String) -> String = {
  print(it)
  readLine()!!
}
(ask("Enter a: ") to ask("Enter b: "))
  .map { a, b -> b to a }
于 2018-07-19T13:53:39.690 回答
0

使用 Kotlin 类型转换的强大功能,它就完成了!

    var a = readLine()!!
    var b = readLine()!!
    //print

    val c = a.toInt() + b.toInt()
    b = (c-b.toInt()) as String
    a = (c-a.toInt()) as String
    //print
于 2018-07-20T20:12:05.733 回答
0

您可以使用名为'also' 的kotlin 标准函数。

var a = readLine()!!
var b = readLine()!!
a = b.also { b = a }
于 2019-03-14T09:52:37.297 回答