Kotlin - "如果readLine()为null或为空赋值为默认值,则解析readLine()"

时间:2018-03-21 13:41:23

标签: kotlin

我是Kotlin的初学者,到目前为止我很喜欢它。我很好奇Kotlin是否有一个快速而简单的解决方案来检查用户输入/字符串是否空虚。我喜欢以下的功能:

"If readLine() is null or empty assign default value, else parse readLine()"

到目前为止,我提出的是:

var inp = readLine()
val double = if(inp.isNullOrEmpty()) 0.0 else inp.toDouble()

这是最好的吗?如果可能,我宁愿不存储原始用户输入字符串。谢谢你的帮助!

3 个答案:

答案 0 :(得分:3)

您可以在此处使用toDoubleOrNull

val double: Double = readLine()?.toDoubleOrNull() ?: 0

如果readLine()返回null,那么readLine()?.toDoubleOrNull()表达式也将返回null,您将返回默认值。

如果readLine()返回非空值,toDoubleOrNull将尝试解析它,如果失败(例如,对于空字符串),它将返回null,让你再次回到默认状态。

答案 1 :(得分:1)

使用elvis运算符和空安全调用

fun main(args: Array<String>) {
    val parsed = readLine()?.toDouble() ?: 0.0
}
  • 仅当值不为null时,才使用?.调用方法,否则它只是传递null。
  • 使用?:表示如果它不为null,则返回左侧的值,否则返回右侧的值

答案 2 :(得分:0)

该解决方案如何:

System.console().readLine()?.ifBlank { null } ?: "default string value"

,并输入密码(这在IntelliJ中不起作用):

String(System.console().readPassword()).ifBlank { "password" }