【问题标题】:What happens with toInt()toInt() 会发生什么
【发布时间】:2018-08-22 06:52:23
【问题描述】:

我目前开始学习 Kotlin,并且正在编写这段代码

val a =  "1"
val b = a[0]
val c = b.toInt()
println(c)

当我运行代码时,结果是 49。到底发生了什么?因为我认为结果会是 1。

【问题讨论】:

  • 因为您将 char 转换为 int 并且 char "1" 相当于代码 49
  • 很可能是ASCII值1

标签: kotlin


【解决方案1】:

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())。

【讨论】:

    【解决方案2】:

    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
    

    【讨论】:

      【解决方案3】:

      在您的示例中,aString,但 StringString 在引擎盖下是 Array of Char。通过使用a[0] 运算符访问您的String,您将获得此字符数组的第一个元素。所以你得到的是字符'1',而不是字符串"1"。现在,当您在Char 上运行'1'.toInt() 函数时,它将返回Char 的ASCII 码。当您在 String 上运行 "1".toInt() 时 - 它会将这个 String 转换为 Int "1"。当您需要获取String中第一个字母的Int值时,您需要先将其转换为String:

      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()
      

      【讨论】:

        猜你喜欢
        • 2014-05-03
        • 1970-01-01
        • 2010-09-26
        • 2021-12-17
        • 2020-01-30
        • 2011-07-07
        • 2013-06-08
        • 2016-12-26
        • 2015-09-23
        相关资源
        最近更新 更多