在底部函数上,我一直得到

fun main(args: Array<String>) {
val   radius = 13;
    println(getArea(radius));
}
fun getArea(radius: Double): Double{
    val area = Math.pow(radius, radius) * Math.PI;
    return area;
}

fun getArea(radius: Int): Double{
    val area = Math.pow(radius, radius) * Math.PI;
    return area;
}

推荐答案

我将try 总结不同的意见,以便对您的问题给出一个有希望的完整答案.

Incompatible type

首先是你的实际问题.Math.pow函数具有以下签名,如the documentation所示:

public static double pow(double a, double b)

但是,您试图通过向其中传递两个Integer来调用此函数,因此会收到编译错误:

类型不匹配:推断的类型为Int,但应为Double

与之前可能使用过的其他一些语言不同,Kotlin不执行数字类型的自动类型转换,您可以在这question on StackOverflow中找到更多信息.

Mistake in math formula

假设您的目标是计算圆的面积,那么您的公式中有一个错误.

应该是A = r^2 * π,但你有A = r^r * π.

Code reuse

如果您想为不同类型的参数提供相同的函数,那么一次实现它并在重载版本中使用单个实现可能会很有用.

与原始代码保持一致,可能会出现以下情况.

fun main(args: Array<String>) {
    val radius = 13;
    println(getArea(radius));
}

fun getArea(radius: Double): Double {
    val area = Math.pow(radius, 2) * Math.PI;
    return area;
}

fun getArea(radius: Int): Double {
    return getArea(radius.toDouble())
}

Syntax improvements

Kotlin是一种非常有表现力的语言,它允许您将代码简化如下.Kotlin中不需要分号.对于单个表达式的简单函数,Kotlin提供了neat shortened syntax.Kotlin的标准库还提供基本的数学功能,如pow functionπ constant.因此,您不需要依赖Java/JVM特定的函数,例如Math中的函数.

import kotlin.math.PI
import kotlin.math.pow

fun getArea(radius: Double): Double = 
    radius.pow(2) * PI

fun getArea(radius: Int): Double = 
    getArea(radius.toDouble())

Kotlin相关问答推荐

如何在使用Kotlin Coroutines时检测和记录何时出现背压

等待下一个值时暂停Kotlin Coroutine

如何注入返回通用列表的转换器?

Kotlin 中的 maxOf() 和 max() 方法有什么区别?

如何获取@JsonProperty 名称列表?

如何在 Spring Boot 3 中为内部类提供运行时提示

Kotlin 中的as Long和.toLong()有什么区别?

如何从 kotlin 中的数据类访问 val?

伴随对象在变量更改时更改它的值

Kotlin:查找集合中最常见的元素

如何使用 Hilt 注入应用程序:ViewModel 中的上下文?

OnClickListener 未在 ConstraintLayout 上触发

从 Java 调用 Kotlin 高阶函数

IntelliJ 不会根据 ktlint 的期望对 Kotlin 导入进行排序

如何在 android jetpack compose 中相互重叠列表项?

在 gradle android library kotlin 项目中禁用 META-INF/* 生成

WebFlux 功能:如何检测空 Flux 并返回 404?

Kotlin flatMap - map

Kotlin - 错误:Could not find or load main class _DefaultPackage

如何判断数据是否插入到房间数据库中