Variables 无法在Kotlin中打印多个布尔值

Variables 无法在Kotlin中打印多个布尔值,variables,types,kotlin,Variables,Types,Kotlin,我从科特林语开始 fun main (args:Array<String>){ var flag1:Boolean= true //Explicit declaration var flag2: =false //Implicit declaration println(flag2 + "and " + flag1) println(flag1) println(flag2) 但我得到了以下错误:- 有人能解释我哪里出错了吗?

我从科特林语开始

fun main (args:Array<String>){


    var flag1:Boolean= true //Explicit declaration
    var flag2: =false //Implicit declaration

     println(flag2 + "and " + flag1)

     println(flag1)
     println(flag2)
但我得到了以下错误:-


有人能解释我哪里出错了吗?

对于编译器错误,请更改以下内容:

println(flag2 + "and " + flag1)
为此:

println("$flag2 and $flag1")
Kotlin是强类型语言,不能对字符串和布尔类型使用加号运算符

但是您可以使用字符串插值,在字符串文本中使用$operator

通过添加以下内容,还可以使用布尔类型上的重载加号运算符对其进行编译:

operator fun Boolean.plus(s: String): String {
    return this.toString() + s
}
在Java中,当您将字符串与任何类型的对象连接在一起时,它会执行。比如说,

System.out.println(true + " and false");    //Output: true and false
在Kotlin中,字符串转换不存在。或者,您可以使用

println("$flag2 and $flag1")
此外,由于Kotlin的String类提供了
plus(Any?
函数,该函数接收任何类型作为参数,因此以下代码行仍然有效:

println("$flag2 and " + flag1)

这里有一个关于这个设计的例子。

我很确定你必须明确地将布尔值字符串化。这不是PHP,你知道:)错误消息告诉你的是kotlin找不到这样的运算符重载
+
,其中左部分是布尔值,右部分是字符串。另外
var flag2:=false
是无效代码,它甚至不会编译。除了上面的注释,你应该使用字符串插值,不连接。或
println(“+flag2+”和“+flag1”)
println("$flag2 and " + flag1)