Kotlin 如何正确地从列表中分割整数?

Kotlin 如何正确地从列表中分割整数?,kotlin,Kotlin,我正试图根据下面的输入平均分数。如何切掉名称并将整数传递给calcAvg函数?等级是可变长度的,所以我想我需要以某种方式将我的集合从元素1分割到列表的大小 输入:杰克:90,80,70,90,50吉尔:80100,30玛丽:20100,90,80 fun main(){ print("Enter your grades: ") val studentGrades = mutableListOf<String>() while

我正试图根据下面的输入平均分数。如何切掉名称并将整数传递给calcAvg函数?等级是可变长度的,所以我想我需要以某种方式将我的集合从元素1分割到列表的大小

输入:杰克:90,80,70,90,50吉尔:80100,30玛丽:20100,90,80

    fun main(){

    print("Enter your grades: ")

    val studentGrades = mutableListOf<String>()

    while (true){
        val input = readLine()!!
        if (input.isNullOrBlank()) break
        else
            studentGrades += input
    }

    for (i in studentGrades){
        val splitRecords = i.split(" ")
        for (j in splitRecords){
            val splitName = j.split(":", ",")//split the name from the grades
        }
    }
}

fun calcAvg(list: List<Double>): Double{
    return list.average()
}
fun main(){
打印(“输入您的成绩:”)
val studentGrades=mutableListOf()
while(true){
val input=readLine()!!
if(input.isNullOrBlank())中断
其他的
学生成绩+=输入
}
(学生成绩中的i){
val splitRecords=i.split(“”)
对于(记录中的j){
val splitName=j.split(“:”,“,”)//从等级中拆分名称
}
}
}
趣味calcAvg(列表:列表):双{
返回列表。平均值()
}

我想你就快到了

在分割出各个记录*之后,我只选择“:”将名字从成绩列表中分离出来。  这应该会给你一个包含两项的列表:姓名和成绩列表,这样你就可以分别对待它们了。  天真的做法是:

val nameAndGradesList = j.split(":")
val name = nameAndGrades[0]
val gradesList = nameAndGrades[1]
但有一种更简单的方法,使用:

然后,您可以将“等级”列表拆分为各个等级,并将其转换为数字:

val grades = gradesList.split(",").map{ it.toDouble() }
我想你可以从那里开始

请注意,所有这些代码都假定每条记录的格式正确;如果没有,它很可能会做一些奇怪的事情(例如,通过抛出异常而崩溃,或者——更糟糕的是——给出错误的结果)。  在生产代码中,您通常希望检查这一点,并以适当且可预测的方式处理无效记录



(*如果每条记录位于单独的行上,则不需要第一次拆分,这是通常的方式。)

感谢您提供了使用解构的解决方案。这对我有用。非常感谢你的帮助。
val grades = gradesList.split(",").map{ it.toDouble() }