Kotlin toBoolean 数字

标签 kotlin type-conversion

无论我输入的是 0 还是 1,以下代码都会生成 false

fun main() {
    val num: String = readln().toString()
    val b: Boolean = num.toBoolean()
    println(b)  
}

我想将 0 转换为 false,将 1 转换为 true

最佳答案

在 Kotlin 中,数字不像其他语言那样与 bool 值相关联。约定 0=false 和 1=true 并不真正存在于语言或 stdlib 中,因此您不太可能找到任何开箱即用的东西。

如果您确实想支持此案例,则必须自己实现。一种方法是这样的:

fun main() {
    val num = readln()
    val b = num.zeroOrOneToBoolean()
    println(b)  
}

private fun String.zeroOrOneToBoolean(): Boolean = when(num) {
    "0" -> false
    "1" -> true
    else -> throw IllegalArgumentException("$this cannot be converted to boolean, expected 0 or 1")
}

您还可以选择将其他事情视为正确或错误:

private fun String.toBooleanLenient(): Boolean = when(num) {
    "0", "false", "False" -> false
    "1", "true", "True" -> true
    else -> throw IllegalArgumentException("$this cannot be converted to boolean")
}

或者您可以决定希望任何不是 "1" 的内容都为 false,在这种情况下,您实际上可以简单地使用 ==:

fun main() {
    val num = readln()
    val b = num == "1" // true for the string "1", false for everything else
    println(b)  
}

关于Kotlin toBoolean 数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73307116/

相关文章:

java - Java Random 和 Kotlin Random 的区别

android - 将图像从 ImageView 设置为 Dialog

c++ - 如何转换为变量类型 - 在 C++ 中模拟类型变量

java - 当变量为 int 类型时 Math.pow 不起作用

c# - 如何编写支持与可空类型之间的转换的通用转换方法?

java - 每次应用程序来自 android 中的后台时启动第一个屏幕

android - 刚刚下载了 Android Studio,打开了我的第一个项目,我在 activity_main.xml 中有错误,但还没有做任何事情

syntax - 有没有办法在 Kotlin 的数据类中嵌套枚举?

java - 如何使用 java.time.ZonedDateTime 生成 UTC 格式的原始 long 值

c - 如何使用直接来自函数的返回值作为位串而不是格式化数字?