Kotlin 来自控制台的循环字符串和奇数和 fun main(args:Array){ println(“编号:”) val num=readLine()!!.toInt() var总和=0 for(数字中的数字){ 如果(数字%2!=0){ 总和+=位数 } } println($sum) }

Kotlin 来自控制台的循环字符串和奇数和 fun main(args:Array){ println(“编号:”) val num=readLine()!!.toInt() var总和=0 for(数字中的数字){ 如果(数字%2!=0){ 总和+=位数 } } println($sum) },kotlin,Kotlin,我需要这个循环遍历数字中的每个数字,并对所有奇数数字求和。 它在num上给了我一个错误,因为循环范围必须有一个'iterator()'方法“您不能像num那样迭代Int: fun main(args: Array<String>) { println("Number: ") val num = readLine()!!.toInt() var sum = 0 for (digit in num) { if (digit % 2 != 0

我需要这个循环遍历数字中的每个数字,并对所有奇数数字求和。
它在num上给了我一个错误,因为循环范围必须有一个'iterator()'方法“

您不能像
num
那样迭代
Int

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")
}
val num = readLine()!!.toInt()
您可以使用标准函数
map
filter
sum
,不使用循环来修复它:

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")
}
val num = readLine()!!.toInt()
偶数的
筛选条件为
it%2==0

编辑

对于家庭作业,请执行以下操作:

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

对于包含如何实现所需的答案,您需要解释希望通过整数循环执行的操作。我已经更新了@chriscan,您可以举个例子吗?例如,用户输入34652312,它打印12,这是该数字@s1m0nw1上所有偶数algarism的总和。我的答案能满足您的需要吗?我想这可以解决问题,但有没有更简单的方法?这是我必须为我的课程做的家庭作业,我们还没有学习地图或过滤器,所以如果我用它的话会很奇怪。谢谢您当然,我会添加它您不需要
.tocharray()
,因为
String.iterator()
已定义。您也可以从
Char
转到它所表示的数字,而不使用中间字符串(
getNumericValue()
),但这更像是一种优化。