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岁以上:)