首页 > 解决方案 > Kotlin:将双精度转换为整数时出现 ClassCastException?

问题描述

我需要在 Kotlin 中做一个 for 循环:

for (setNum in 1..(savedExercisesMap[exerciseKey] as HashMap<*, *>)["sets"] as Int){

但我得到这个错误:

java.lang.ClassCastException: java.lang.Double cannot be cast to java.lang.Integer

我不认为这会是一个问题。发生这种情况是否有原因以及如何解决?

标签: kotlincasting

解决方案


使用关键字从Doubleto 转换Int永远不会成功。as它们都扩展了Number类,也没有扩展另一个,所以这种转换既不是向下转换也不是向上转换。要在 Kotlin 中将 double 转换为 int,您应该使用.toInt()function。

val aDouble: Double = 2.22222
//val anInt = aDouble as Int // wrong
val anInt = aDouble.toInt() // correct

推荐阅读