Kotlin “字符串”;2“;toInt返回50

Kotlin “字符串”;2“;toInt返回50,kotlin,Kotlin,我只是在kotlin做一些简单的练习题。在下面的代码中,我取了一个数字,并尝试将这些数字添加到一起。例29,返回2+9=11。可能有更好的方法来实现这一点,但是,我将数字转换为字符串,然后将它们放入一个列表中,即当我尝试转换列表[0].toInt()时,它返回50。似乎有一些取整发生,但我还没有找到另一个kotlin方法。有人能提供一些见解吗?短暂性脑缺血发作 fun main(args: Array<String>) { fun addTwoDigits(n: Int): In

我只是在kotlin做一些简单的练习题。在下面的代码中,我取了一个数字,并尝试将这些数字添加到一起。例29,返回2+9=11。可能有更好的方法来实现这一点,但是,我将数字转换为字符串,然后将它们放入一个列表中,即当我尝试转换列表[0].toInt()时,它返回50。似乎有一些取整发生,但我还没有找到另一个kotlin方法。有人能提供一些见解吗?短暂性脑缺血发作

fun main(args: Array<String>) {
  fun addTwoDigits(n: Int): Int {
    val sliced = n.toString().toList()
    val int1 = sliced[0].toInt()
    println(sliced[0]) //returns "2"
    println(int1) // returns 50
    return sliced[0].toInt() + sliced[1].toInt()
  }

  println(addTwoDigits(29))
} 
fun main(args:Array){
乐趣添加两位数(n:Int):Int{
val sliced=n.toString().toList()
val int1=已切片[0]。toInt()
println(切片[0])//返回“2”
println(int1)//返回50
返回切片[0].toInt()+切片[1].toInt()
}
println(添加两位数字(29))
} 
Koltin Char.toString(),您正在第行中使用它:

val int1=已切片[0]。toInt()

使用ASCII代码表转换字符

您只需在toInt()调用之前添加一个toString()调用:

val int1=已切片[0]。toString().toInt()

Koltin Char.toString(),您正在第行中使用它:

val int1=已切片[0]。toInt()

使用ASCII代码表转换字符

您只需在toInt()调用之前添加一个toString()调用:

val int1=已切片[0]。toString().toInt()


50
是字符
'2'
的第一个问题,只是想知道:您知道,如果您给出的数字超过2位,如
123
,它只会添加前2位,
1+2
,对吗?。而且它在执行数字
0-9
时会抛出IndexOutOfBounds异常,对于负数它也总是会失败?@Alex.T编码问题被称为“addTwoDigits”,它不是针对3或4,如果是这样的话,我会改变我的方法。感谢您的见解。
50
是字符
'2'
的第一个问题,只是想知道:您知道,如果您给出的数字超过2位,如
123
,它只会添加前2位,
1+2
,对吗?。而且它在执行数字
0-9
时会抛出IndexOutOfBounds异常,对于负数它也总是会失败?@Alex.T编码问题被称为“addTwoDigits”,它不是针对3或4,如果是这样的话,我会改变我的方法。谢谢你的洞察力。哦,很好。这样做有效,我会认为它已经是一个字符串了,因为我在它们被添加到列表之前转换了它。这只是kotlin/java的一个怪癖吗?您正在将整数
29
转换为字符串
“29”
,将其拆分为两个字符的列表
'2'
'9'
,然后打印/添加这些字符的数字代码值(
50
57
),而不是它们所代表的整数值(
2
9
)。好的,谢谢@RemyleBeaouh,很好。这很有效,我会认为它已经是一个字符串了,因为在它们被添加到列表之前我已经转换了。这只是kotlin/java的一个怪癖吗?你正在将整数
29
转换成字符串
“29”
,将其拆分为两个字符的列表,
'2'
'9'
,然后打印/添加这些字符的数字代码值(
50
57
),而不是它们表示的整数值(
2
9
)。好的,谢谢@RemyLebeau