我正在Kotlin的一个控制台应用程序上工作,我在main()函数中接受多个参数
fun main(args: Array<String>) {
// validation & String to Integer conversion
}
Run Code Online (Sandbox Code Playgroud)
我想检查是否String是一个有效的整数并转换相同,否则我必须抛出一些异常.
我该如何解决这个问题?
ear*_*jim 39
你可以打电话toInt()给你的String实例:
fun main(args: Array<String>) {
for (str in args) {
try {
val parsedInt = str.toInt()
println("The parsed int is $parsedInt")
} catch (nfe: NumberFormatException) {
// not a valid int
}
}
}
Run Code Online (Sandbox Code Playgroud)
或toIntOrNull()作为替代方案:
for (str in args) {
val parsedInt = str.toIntOrNull()
if (parsedInt != null) {
println("The parsed int is $parsedInt")
} else {
// not a valid int
}
}
Run Code Online (Sandbox Code Playgroud)
如果您不关心无效值,那么您可以toIntOrNull()与安全调用操作符和范围函数结合使用,例如:
for (str in args) {
str.toIntOrNull()?.let {
println("The parsed int is $it")
}
}
Run Code Online (Sandbox Code Playgroud)
实际上,有几种方法:
鉴于:
var numberString : String = "numberString"
// number is the int value of numberString (if any)
var defaultValue : Int = defaultValue
Run Code Online (Sandbox Code Playgroud)
然后我们有:
+—————————————————————————————————————————————+——————————+———————————————————————+
| numberString is a valid number ? | true | false |
+—————————————————————————————————————————————+——————————+———————————————————————+
| numberString.toInt() | number | NumberFormatException |
+—————————————————————————————————————————————+——————————+———————————————————————+
| numberString.toIntOrNull() | number | null |
+—————————————————————————————————————————————+——————————+———————————————————————+
| numberString.toIntOrNull() ?: defaultValue | number | defaultValue |
+—————————————————————————————————————————————+——————————+———————————————————————+
Run Code Online (Sandbox Code Playgroud)
按照上面的建议,使用toIntOrNull().
将字符串解析为 [Int] 数字并返回结果,或者
null如果字符串不是数字的有效表示形式。
val a = "11".toIntOrNull() // 11
val b = "-11".toIntOrNull() // -11
val c = "11.7".toIntOrNull() // null
val d = "11.0".toIntOrNull() // null
val e = "abc".toIntOrNull() // null
val f = null?.toIntOrNull() // null
Run Code Online (Sandbox Code Playgroud)
小智 5
如果你确实有一个String,请调用toInt()它:
val myInt = myString.toInt()
Run Code Online (Sandbox Code Playgroud)
但你真的确定这是一个String吗?如果您迭代单个String,则不会获得String长度为 1 的实例(如果您习惯使用另一种语言,即 Python,您可能会期望),但会获得 的实例,在这种情况下Char您想使用digitToInt():
val myInt = myChar.digitToInt()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
24241 次 |
| 最近记录: |