无论我输入的是 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/