Kotlin 如何正确地从列表中分割整数?
我正试图根据下面的输入平均分数。如何切掉名称并将整数传递给calcAvg函数?等级是可变长度的,所以我想我需要以某种方式将我的集合从元素1分割到列表的大小 输入:杰克:90,80,70,90,50吉尔:80100,30玛丽:20100,90,80Kotlin 如何正确地从列表中分割整数?,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
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() }