下面是我的代码
import java.util.*
fun main() {
println("Hello World")
dayOfWeek()
}
fun dayOfWeek() {
var date : Int = Calendar.getInstance().get(Calendar.DATE).toInt()
when (date) {
1..5 -> {
println("Hello 1-5")
}
5 -> {
println("Hello 5")
}
3, 7, 9 -> {
println("3 7 9")
}
}
}
Run Code Online (Sandbox Code Playgroud)
当我做这个节目时是一个错误
不兼容的类型:IntRange 和 Int
如何解决这个问题?
您需要in先指定前缀range
fun main() {
println("Hello World")
dayOfWeek()
}
fun dayOfWeek() {
when (Calendar.getInstance().get(Calendar.DATE)) {
in 1..5 -> {
println("Hello 1-5")
}
5 -> {
println("Hello 5")
}
3, 7, 9 -> {
println("3 7 9")
}
}
}
Run Code Online (Sandbox Code Playgroud)
不确定您的应用程序中的用例是什么,但请注意,当日期为或时,第二个和第三个案例将不会3执行5
小智 4
您从日历中提取的值是一个Int. 该表达式将尝试将其与由文字表示的类型when匹配(有关该类的更多信息,请参见此处)。这些类型不同,因此会出现错误IntRange1..5
不兼容的类型:IntRange 和 Int
您想要的是询问该整数是否在该range内,因此您只需为该范围添加前缀,如此处指定的 with range的用法。inwhen
所以代码看起来像
fun dayOfWeek() {
var date : Int = Calendar.getInstance().get(Calendar.DATE).toInt()
when (date) {
in 1..5 -> {
println("Hello 1-5")
}
5 -> {
println("Hello 5")
}
3, 7, 9 -> {
println("3 7 9")
}
}
}
Run Code Online (Sandbox Code Playgroud)