【问题标题】:How to return one of two strings in Kotlin?如何在 Kotlin 中返回两个字符串之一?
【发布时间】:2020-11-13 20:06:18
【问题描述】:

所以我最近才开始通过 Google 的新课程学习 Kotlin,并学习如何从骰子中随机选择一个数字。我对其中的一部分有点困惑,所以我尝试制作一个随机硬币翻转程序来帮助更好地理解它。我尝试使用.random 在两个字符串之间进行选择,但它不起作用并给出了一个很长的错误。到目前为止的代码如下:

fun main() {
val coinSide = Coin()   
    println("You flipped a ${coinSide}")
​
​
}
​
class Coin (){
    
    fun flip() : String {
        val head = ("Heads")
        val tails = ("Tails")
        return (head..tails).random()
    }    
}

【问题讨论】:

  • 当您遇到错误时,请包含该错误。 random 是数组上的函数吗?你构建了一个数组吗?一系列“正面”……“反面”甚至意味着什么?

标签: android kotlin random


【解决方案1】:

您的代码有很多问题,random() 不是 (String..String) 存在的函数。你从来没有真正调用过翻转()。您正在打印硬币,而不是打印字符串。

试试这个:

fun main() {
    val coinSide = Coin()
    println("You flipped a ${coinSide.flip()}")
}

class Coin {
    fun flip() : String {
        val head = "Heads"
        val tails = "Tails"
        return listOf(head, tails).random()
    }
}

这是保持你的风格。 这段代码可以简化为:

fun main() = println("You flipped a ${Coin().flip()}")

class Coin {
    fun flip() = listOf("Heads", "Tails").random()
}

【讨论】:

  • 这行得通!附带问题,println 语句的“.flip()”部分是如何工作的?
  • 这只是在硬币上调用翻转函数。 Kotlin 有一个称为字符串插值的功能。字符串“你翻转了一个 ${coinSide.flip()}”相当于“你翻转了一个” + coinSide.flip()
【解决方案2】:

我确信 OP 现在已经在评论中找到了问题的答案,但是为了后代......“println 语句的 .flip() 部分”调用了翻转函数。没有它,您只是创建一个空白对象的实例。在运行 flip() 函数之前,您的 coin 类没有任何价值。

【讨论】:

  • 我同意。但是在我确信之前必须阅读你的陈述四次,如果你提供代码来向其他听众展示你的情况,我很乐意支持你的回答。
【解决方案3】:

Google 要求您“创建一个 Coin 类,赋予它翻转的能力,创建该类的一个实例并翻转一些硬币”。你可以这样做:

fun main() {
    val my5CentCoin = Coin(5)
    println("Your ${my5CentCoin.cent} cent coin flipped ${my5CentCoin.flip()}!")

    val my10CentCoin = Coin(10)
    println("Your ${my10CentCoin.cent} cent coin flipped ${my10CentCoin.flip()}!")

    val my25CentCoin = Coin(25)
    println("Your ${my25CentCoin.cent} cent coin flipped ${my25CentCoin.flip()}!")
}

class Coin(val cent: Int) {

    fun flip(): String {
        val flipSide = listOf("Heads","Tails").random()
        return flipSide
    }
}

这是输出:

你的 5 美分硬币正面朝上!

你的 10 美分硬币反了!

你的 25 美分硬币正面朝上!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-15
    • 2019-08-18
    • 2016-12-19
    • 2011-01-04
    • 1970-01-01
    • 1970-01-01
    • 2017-05-30
    相关资源
    最近更新 更多