我目前开始学习Kotlin,并且正在编写这段代码
val a = "1"
val b = a[0]
val c = b.toInt()
println(c)
运行代码时,结果为49。真正发生了什么?因为我认为结果将是1。
答案 0 :(得分:2)
a
是String
,它是CharSequence
。这就是为什么您可以首先访问a[0]
的原因。 a.get(0)
或a[0]
然后返回Char
。另一方面,Char
会在调用toInt()
时返回其字符值,同时还要检查documentation of toInt()
。
因此您的代码已注释:
val a = "1" // a is a String
val b = a[0] // b is a Char
val c = b.toInt() // c is (an Int representing) the character value of b
如果您只想返回数字,则需要解析该数字或使用您最喜欢的任何答案:How do I convert a Char to Int?
(一种简单的方法是b.toString().toInt()
)。
答案 1 :(得分:0)
a是字符串,
当您获得[index]返回类型为char时,
在kotlin char.toInt方法中返回字符的ASCII码,它是49
如果要获取整数值“ 1”,请使用toString方法
val a = "1"
val b = a[0].toString()
val c = b.toInt()
println(c)
prints:1
答案 2 :(得分:0)
在您的示例中,a
是String
,但String
。 String
位于Array of Char
之下。通过使用String
运算符访问a[0]
,您将获得此Char Array的第一个元素。因此,您得到的是Char '1'
,而不是String "1"
。现在,当您在'1'.toInt()
上运行Char
函数时-它会返回该Char
的ASCII码。当您在String上运行"1".toInt()
时,它将将此String转换为Int“ 1”。当需要获取字符串中第一个字母的Int值时,需要先将其转换为字符串:
val a = "123"
val b = a[0].toString() // returns first Char of String "123" and converts to String
val c = b.toInt() // returns Int: 1
或一行:
"123"[0].toString().toInt()