我的困难是
1.1错误:(32,51)Kotlin:无法智能强制转换为“OrderProcessing.OrderNode”,因为“Run.Next”是一个复杂的表达式
我明白有很多错误,回答其中的任何一个部分或者给我一些暗示已经很感激了。谢谢你的好意。
我的代码如下:
Class OrderProcessing {
var first: OrderNode? = null
// Linked List
data class OrderNode(val order: Order, var next: OrderNode?)
fun sortByTotal () {
var run = first
var temp = Double
while (run?.next != null) {
32 if (run.order.shoppingCart.totalprice <= run.next.order.shoppingCart.totalprice){
33 temp = run.order.shoppingCart.totalprice
34 run.order.shoppingCart.totalprice = run.next.order.shoppingCart.totalprice
run.next.order.shoppingCart.totalprice = temp
}
38 run?.next = OrderNode(order, run?.next)
}
}
涉及的类:
Class ShoppingCart () {
private val shoppingList = mutableListOf<Pair<Product, Int>>
// totalprice = sum of item price in each cart
val totalprice : double
... }
data class Order(
val shoppingCart: ShoppingCart,
val address: Address
)
fun main(){
// while loop until "exit", Menu with functions to add goods to cart, clear cart, show shopping list (items and price)
1.1错误:(32,51)Kotlin:无法智能强制转换为“OrderProcessing.OrderNode”,因为“Run.Next”是一个复杂的表达式
即使您检查run?.next!=null
,但next
稍后仍可能变为null
。添加非空断言将有所帮助:run.next!!.order
1.2错误:(33,20)Kotlin:类型不匹配:推断的类型是Double但需要Double.Companion
1.4错误:(38,31)Kotlin:未解析引用:order
run
是OrderNode
的实例,它具有的val order:order
。SortByTotal
是OrderProcessing
的方法,没有称为Order
的字段或局部变量。
如果您需要对自定义链表进行排序,那么仅仅交换购物车总价(就像第33-35行所做的那样)不是一个好主意,因为它会保留shoppinglist
但却会弄乱总价。相反,您需要相应地更改next
指针。一种可能的方法是将所有OrderNode
放入一个集合中,然后按价格对其排序,然后为每个OrderNode
迭代和重置Next
指针。
主要活动如下: 当单击fab按钮时,我尝试在数据模型中增加计数器 但是我在第< code > mview model . counter . value 行得到一个错误 智能转换为“整数”是不可能的,因为“mView模型.计数器.值”是一个复杂的表达式 错误是什么意思? 这里是数据模型 编辑 如果我注释掉空检查 我收到错误 在Int类型的可空接收器上只允许安全(?)或非空断言(!!)调用? 编辑
为什么当我使用No.2脚本时Android Studio显示错误。我发现1和2之间没有区别。 请解释这个案例
我已经使用android studio内置的文件转换器将java文件转换为kotlin。它显示以下错误。 [SMARTCAST_IMPOSSIBLE]智能强制转换为“ReminderRequester”是不可能的,因为“ReminderRequester”是一个可变属性,此时可能已被更改 我查过类似的问题,但我不能正确地理解它。 上述错误的含义是什么?如何修复?
我正在尝试在 Kotlin 中生成一个单例,并且遇到了问题,因为我无法。 这似乎是制作单例的一种非常标准的方法。为什么它不让我,我该如何解决它?
我知道是可变变量,但我显式检查了并且是类型,那么为什么不能智能转换为该类型呢? 我怎样才能把它修好呢?
我还在另一个类中使用了bitmap2和Bitmap1: 这里写着:类型不匹配,必需:位图找到:位图?