Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kotlin “内部不平等”;什么时候;语句输出错误_Kotlin_Case When_Inequality - Fatal编程技术网

Kotlin “内部不平等”;什么时候;语句输出错误

Kotlin “内部不平等”;什么时候;语句输出错误,kotlin,case-when,inequality,Kotlin,Case When,Inequality,这里我有一个程序,它根据不同的条件分配变量的值: fun main(args: Array<String>) { var age = readLine()!!.toInt() var string_age = when(age) { in 0..11 -> "Child" in 12..17 -> "Teen" in 18..64 -> "Adult"

这里我有一个程序,它根据不同的条件分配变量的值:

fun main(args: Array<String>) {
   var age = readLine()!!.toInt()
   var string_age = when(age) {
       in 0..11 -> "Child"
       in 12..17 -> "Teen"
       in 18..64 -> "Adult"
       age > 64 -> "Senior"
       else -> "Invalid age"
   }
   print(string_age)
}
fun main(args:Array){
var age=readLine()!!.toInt()
变量字符串_年龄=何时(年龄){
在0..11->“子对象”中
在12..17->“青少年”
在18..64->“成人”
年龄>64岁->高龄
else->“无效年龄”
}
打印(字符串长度)
}

但是,不等式“age>64”返回“不兼容的类型:Boolean和Int”。为了在“when”语句中使用不等式,我必须做些什么。

不幸的是,当的情况下,在
中不能显式使用
when
的参数。 因此,您可以如下方式调整代码:

var string\u age=when(年龄){
在0..11->“子对象”中
在12..17->“青少年”
在18..64->“成人”
其他->{
如果(年龄>64岁){
“高级”
}否则{
“无效年龄”
}
}
}
或者像这样,将
age
移出
when
并在所有情况下显式使用它

var string\u age=when{
年龄在0..11->“儿童”
12岁至17岁->青少年
年龄在18..64->“成人”
年龄>64岁->高龄;
else->“无效年龄”
}
或者你也可以用下面的技巧来控制射程

在65..200->“高级”
而不是
年龄>64->“高级”

200年对于一个人的寿命来说是足够大的;)

不幸的是,当
的案例显式出现时,您不能在
中使用
的参数。
因此,您可以如下方式调整代码:

var string\u age=when(年龄){
在0..11->“子对象”中
在12..17->“青少年”
在18..64->“成人”
其他->{
如果(年龄>64岁){
“高级”
}否则{
“无效年龄”
}
}
}
或者像这样,将
age
移出
when
并在所有情况下显式使用它

var string\u age=when{
年龄在0..11->“儿童”
12岁至17岁->青少年
年龄在18..64->“成人”
年龄>64岁->高龄;
else->“无效年龄”
}
或者你也可以用下面的技巧来控制射程

在65..200->“高级”
而不是
年龄>64->“高级”

200年对于一个人的寿命来说是足够大的;)

非常感谢你,男人;我很困惑为什么它不起作用,因为它看起来很简单。建议不要在when语句中使用参数吗?@EvanBain这取决于您执行的检查类型。如果您有一个参数要通过一组检查(这就是您的情况)进行分析,并且所有这些检查都是类似的,那么最好在(参数)时使用
when
。对于更复杂的检查,当使用多个参数时,最好在不带参数的情况下使用
。由于您的情况相当简单,我建议您遵循我在65..200->“高级”
中的第三条建议。我怀疑人们能活到200岁以上:)感谢这么多人;我很困惑为什么它不起作用,因为它看起来很简单。建议不要在when语句中使用参数吗?@EvanBain这取决于您执行的检查类型。如果您有一个参数要通过一组检查(这就是您的情况)进行分析,并且所有这些检查都是类似的,那么最好在(参数)时使用
when
。对于更复杂的检查,当使用多个参数时,最好在不带参数的情况下使用
。由于您的情况相当简单,我建议您遵循我在65..200->“高级”
中的第三条建议。我怀疑人们能活到200岁以上:)