过滤kotlin中的范围

过滤kotlin中的范围,kotlin,Kotlin,在kotlin中,我希望筛选一个Int范围,以生成奇偶示例。所以我做了一个列表,列出了范围1..50 val angka = listOf(1..50) 然后对偶数应用过滤器,对奇数应用过滤器 val genap = angka.filter { it % 2 == 0} val ganjil = angka.filterNot { it % 2 == 0 } 然后打印偶数/奇数列表 println("Genap = $genap") println("Ganj

在kotlin中,我希望筛选一个
Int
范围,以生成奇偶示例。所以我做了一个
列表,列出了
范围
1..50

val angka = listOf(1..50)
然后对
偶数应用
过滤器
,对
奇数应用
过滤器

val genap = angka.filter { it % 2 == 0}
val ganjil = angka.filterNot { it % 2 == 0 }
然后打印偶数/奇数列表

println("Genap = $genap")
println("Ganjil = $ganjil")
我看不出代码有任何问题,但它确实引发了下面提到的异常

Unresolved reference. None of the following candidates is applicable because of receiver type mismatch:
public inline operator fun BigDecimal.mod(other: BigDecimal): BigDecimal defined in kotlin

如果您是Kotlin的初学者,请明确指定值的类型,或者启用局部变量类型hits

通过这种方式,您可能会注意到代码并不完美。您的列表不是类型列表,而是类型列表

这意味着您不是在执行
Int%2==0
,而是在执行
内部消息%2==0

如果要从某个范围获取列表,需要执行
(x..y).toList()
。因此,您的代码将是:

val angka = (1..50).toList() //or since you are not using this list anywhere else, just leave it as `1..50` and the filter will work fine on the IntRange.

val genap = angka.filter { it % 2 == 0 }
val ganjil = angka.filterNot { it % 2 == 0 }

println("Genap = $genap")
println("Ganjil = $ganjil")
输出:

Genap = [2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50]
Ganjil = [1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39, 41, 43, 45, 47, 49]

这将创建一个包含单个元素的
列表

val angka=listOf(1..50)
您应该直接过滤范围:

val angka = 1..50

代码的其余部分是正确的。

您对所有数字的声明是错误的。。。它是这样的
val angka:List=listOf(1..50)
。您创建了包含一个范围的范围列表

这应该起作用:

val angka = 1..50
val genap = angka.filter { it % 2 == 0}
val ganjil = angka.filterNot { it % 2 == 0 }
println("Genap = $genap")
println("Ganjil = $ganjil")

这是一个编译错误。  不是异常(从运行时抛出的kotlin.exception或java.lang.exception派生的对象)。