从控制台循环字符串和总和奇数

时间:2018-01-17 00:03:32

标签: kotlin

fun main(args: Array<String>) {
    println("Number: ")
    val num = readLine()!!.toInt()
    var sum = 0
    for (digit in num) {
        if (digit % 2 != 0) {
            sum += digit
        }
    }
    println("$sum")
}

我需要这个循环来遍历数字中的每个数字,并将所有奇数的数字相加。 它给我一个num&#34的错误; For-loop范围必须有一个&#39; iterator()&#39;方法&#34;

1 个答案:

答案 0 :(得分:3)

您无法迭代Int之类的num

val num = readLine()!!.toInt()

您可以在没有循环的情况下使用标准函数mapfiltersum进行修复:

val sum = readLine()!!.toCharArray()
    .map { it.toString().toInt() }
    .filter { it % 2 != 0 }
    .sum()

filter - 偶数的条件为it % 2 == 0

修改

为了做作业,请执行以下操作:

val num = readLine()!!.toCharArray()
var sum = 0
for (a in num) {
    val intVal = a.toString().toInt()
    if (intVal % 2 != 0) {
        sum += intVal
    }
}