Kotlin挑战赛已经开始.
所有任务都是编写一个控制台程序,从控制台读取参数并将输出写入控制台以进行自动检查.
Kotlin的主要方法看起来像
fun main(args: Array<String>): Unit {
//do something
}
Run Code Online (Sandbox Code Playgroud)
任务中的大多数输入参数都应解释为数字.所以,由于缺乏像Long.valueOf(String s)
我刚刚卡住的方法.我无法将String转换为Long,我感到惭愧.
Mis*_*agh 120
1. string.toLong()
将字符串解析为[Long]数字并返回结果.
@throws NumberFormatException如果字符串不是数字的有效表示.
2. string.toLongOrNull()
将字符串解析为[Long]数字并返回结果,或者
null
如果字符串不是数字的有效表示.
3. str.toLong(10)
将字符串解析为[Long]数字并返回结果.
@throws NumberFormatException如果字符串不是数字的有效表示.
@throws IllegalArgumentException [radix]不是字符串到数字转换的有效基数.
public inline fun String.toLong(radix: Int): Long = java.lang.Long.parseLong(this, checkRadix(radix))
Run Code Online (Sandbox Code Playgroud)
4. string.toLongOrNull(10)
将字符串解析为[Long]数字并返回结果,或者
null
如果字符串不是数字的有效表示.@throws IllegalArgumentException [radix]不是字符串到数字转换的有效基数.
public fun String.toLongOrNull(radix: Int): Long? {...}
Run Code Online (Sandbox Code Playgroud)
5. java.lang.Long.valueOf(string)
public static Long valueOf(String s) throws NumberFormatException
Run Code Online (Sandbox Code Playgroud)
Ily*_*kov 92
String
有一个相应的扩展方法:
"10".toLong()
Run Code Online (Sandbox Code Playgroud)
Eri*_*ric 56
扩展方法可用于String
将它们解析为其他基本类型.以下示例:
"true".toBoolean()
"10.0".toFloat()
"10.0".toDouble()
"10".toByte()
"10".toShort()
"10".toInt()
"10".toLong()
注意:提到jet.String
的答案已过时.这是目前的Kotlin(1.0):
String
Kotlin中的任何一个都有你可以调用的扩展功能toLong()
.没有什么特别需要,只需使用它.
记录所有扩展功能String
.您可以在api参考中找到标准库的其他文件
这真有趣.像这样的代码:
val num = java.lang.Long.valueOf("2");
println(num);
println(num is kotlin.Long);
Run Code Online (Sandbox Code Playgroud)
进行此输出:
2
true
Run Code Online (Sandbox Code Playgroud)
我想,在这种情况下,Kotlin会从java.lang.Long
原始转换到长原始转换kotlin.Long
.所以,它是解决方案,但我很乐意看到没有java.lang包使用的工具.
实际上,90%的时间你需要检查'long'是有效的,所以你需要:
"10".toLongOrNull()
Run Code Online (Sandbox Code Playgroud)
对于基本类型的每个'toLong',有一个'orNull'等价物,这些允许管理与Kotlin保持一致的无效案例?成语.
在 Kotlin 中,将 a 转换String
为Long
(表示 64 位有符号整数)很简单。
您可以使用以下任意示例:
val number1: Long = "789".toLong()
println(number1) // 789
val number2: Long? = "404".toLongOrNull()
println("number = $number2") // number = 404
val number3: Long? = "Error404".toLongOrNull()
println("number = $number3") // number = null
val number4: Long? = "111".toLongOrNull(2) // binary
println("numberWithRadix(2) = $number4") // numberWithRadix(2) = 7
Run Code Online (Sandbox Code Playgroud)
通过方法,您可以在安全调用运算符之后toLongOrNull()
使用let { }
作用域函数。?.
这样的逻辑适合执行仅具有非空值的代码块。
fun convertToLong(that: String) {
that.toLongOrNull()?.let {
println("Long value is $it")
}
}
convertToLong("123") // Long value is 123
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
64579 次 |
最近记录: |