можем ли мы поменять местами два числа в kotlin, используя две переменные, и получить ввод от пользователя?

Я попробовал это с помощью следующей программы, но она показывает ошибку, что ожидается переменная kotlin:

[введите здесь описание изображения


person Varun Gandhi    schedule 19.07.2018    source источник
comment
Привет! попробуйте ввести код в своем вопросе, а не делать снимок экрана! Вы получите лучший ответ.   -  person RLave    schedule 19.07.2018
comment
Вот четкий ответ - › stackoverflow.com/questions/45377802/swap -функция-в-котлине   -  person MrVasilev    schedule 17.06.2019


Ответы (4)


Это не традиционный способ, но в любом случае:

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")
}

и это способ Kotlin с только 2 переменными:

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")
}
person Community    schedule 19.07.2018

Я не знаю, почему вы хотите поменять местами значения, но в зависимости от того, что именно вы хотите сделать, и если вам не нужны переменные, вот еще один подход с использованием Pair:

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

который для ввода 1 и 2 печатает:

(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 }
person Roland    schedule 19.07.2018

Используйте мощь приведения типов 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
person Asim    schedule 20.07.2018

Вы можете использовать стандартную функцию kotlin с именем 'also'.

var a = readLine()!!
var b = readLine()!!
a = b.also { b = a }
person Nikunj Joshi    schedule 14.03.2019