我是Kotlin的初学者,在这个例子中是给我的。这很让人困惑。下面是我对此所做的代码:
import kotlin.math.sqrt
class Rectangle(val length: Double, val width: Double){
fun main(){
print("Length: ")
val length = input()
print("Width: ")
val width = input()
val rect = Rectangle(length,width)
rect.recDetails()
print("\nNew area: ")
var area = input()
rect.area = area
rect.recDetails()
}
private fun input() = readLine()!!.toDouble() 发布于 2022-02-02 08:22:04
现在用户可以输入新的区域,我们需要重新计算长度和宽度,第一步是使它们成为var。
在此之后,现在唯一需要的就是在设置新区域时计算新的长度和宽度。通过一些基本的数学,你可以发现:
Given area A, original length L and original width W:
newLength = sqrt(L*A/W) and newWidth = sqrt(W*A/L) // keeping the L/W ratio fixed只需在area设置器中使用这些
set(value: Double) {
field = value
val newLength = sqrt(value * length / width)
val newWidth = sqrt(value * width / length)
length = newLength
width = newWidth
}虽然我不喜欢为这样的计算修改better /setter,但是最好为更新区域创建一个适当的函数。但是,由于您专门要求使用getter/setter方法,所以它就在这里。
https://stackoverflow.com/questions/70951628
复制相似问题