当前位置: 首页 > 知识库问答 >
问题:

需要Kotlin中的元素

尹昀
2023-03-14
class DiscountProduct(
productName: String,
basePrice: Double,
salesPrice: Double,
description: String) :
Product(productName, basePrice, salesPrice, description) {
val discount = mutableListOf(DiscountType.SUMMER, DiscountType.SHORT, DiscountType.ALLAWAY, DiscountType.NODISC)
}

open class Product(
  val productName: String,
  var basePrice: Double,
  open var salesPrice: Double,
  val description: String) {...}


enum class DiscountType(disc:Int) {
  SUMMER(20),
  SHORT(10),
  ALLAWAY(50),
  NODISC(0)
}

谢谢你!

共有1个答案

和斌
2023-03-14

在这一行中,有两个错误

override var salesPrice: Double = salesPrice*(100-discount)%

首先,您试图从100中减去一个对象列表(在您的示例中是discounttype)。这样是行不通的。你应该说出你到底想怎么做。例如编写另一个函数。类似这样的事情:

fun getDiscount(discounts : List<DiscountStatus>): Int{
    return 100 - discounts.sumBy { it.disc } 
}

或者你想怎么打折。无论如何,编译器不知道如何处理不同的类型(number和一个discountType对象列表)。

第二,在语句结尾处添加一个%符号。在Kotlin中有这样一个运算符,但使用的方式不同。您可能希望将您的折扣应用于销售价格。同样,您必须告诉编译器您到底想要怎样做。编写函数:

fun applyDiscount(price: Double, discount: Int): Double {
    return price * (discount.toDouble() / 100.0)
}

或者类似的东西。最后把这一切合二为一:

val discount = mutableListOf(DiscountType.SUMMER, DiscountType.SHORT, DiscountType.ALLAWAY, DiscountType.NODISC)
override var salesPrice: Double = applyDiscount(salesPrice, getDiscount(discount))

请你自己做整个计算,把我的答案当作一个例子。你应该学习Kotlin的基础知识,从算术运算开始。https://kotlinlang.org/docs/reference/keyword-reference.html#operators-and-special-symbols

 类似资料:
  • 问题内容: 我有一个非常简单的persistance.xml文件: 而且有效。 但是,当我删除元素时,应用程序看不到实体(所有类都带有注释)。 是否有自动扫描类的机制? 问题答案: 您可以使用persistence.xml 。从Java EE 5教程中 : 该文件定义了一个名为的持久性单元,它使用JTA感知数据源。所述和元素指定管持久类:实体类,可嵌入类和超类映射。该元素指定JAR文件都包含持久化

  • 我试图将我的应用程序从Java转换为静态编程语言。 我使用了Android Studio内置转换器并修复了它生成的大部分错误。 对于科特林来说,这一次让我很难受: 我得到了这个用Java编写的类,并进行了转换,显然没有任何错误,这有助于我在回收视图中管理项目点击: 在main活动中,转换后在函数中设置如下: IDE给我以下错误: 类型不匹配: 必需:ItemClickSupport。OnItemC

  • 我使用android Studio制作了一个静态编程语言MultiPlatform Mobile项目,导入SQLDelight后遇到以下错误: 我回答了这个问题,但他们提到的一切我都做对了。在一个文件一个文件地查看之后,我没有找到我在哪里声明了那个版本,于是我决定将我的项目与其中一个示例项目进行比较。 再次查看这些文件后,我发现我在我的应用程序等级中使用了SQLDelightVersion1.5.

  • 我知道有很多像这样的问题,但没有一个给我提供正确的答案,所以我来这里。 下面是我得到的XML: 下面是相关的java类: