KOTLIN - For 循环参数不支持函数 - 寻找替代方案
KOTLIN - For loop argument is not support function - Looking for alternatives
下面的代码用于计算考试成绩。 5 主题名称和从这些主题收到的 5 点被用户记录在空的 arrays 中。
我这里的都解决了。但是我想在 "cycle" 之后添加 "th" "st" "rd" "nd"。其中写着“请键入课程” 和 “请键入点”
例如:
“请输入 1st 点”
但是使用我的代码我可以:
"请输入 1 点"
我试图用 "When" 条件执行这个过程,但我不能,因为循环参数 "cycle" 不支持 last() 函数
例如:
when (cycle.last()) {
1 -> "st"
2 -> "nd"
}
如果有效,它会给我一个结果11st, 531st, 22nd, 232nd, 等。这就是我想要的
fun main() {
var subject = Array<String>(5){""}
var point = Array<Int>(5){0}
for (cycle in 0 until subject.count()) {
println("Please type ${cycle+1} lesson")
var typeLesson = readLine()!!.toString()
subject[cycle] = typeLesson
println("Please type ${cycle+1} point")
var typePoint = readLine()!!.toInt()
point[cycle] = typePoint
}
var sum = 0
for (cycle in 0 until point.count()) {
println("${subject[cycle]} : ${point[cycle]}")
sum = sum + point[cycle]/point.count()
}
println("Average point: $sum")
}
您可以将数字除以 10,然后使用 %
求余数。那是最后一位。
fun Int.withOrdinalSuffix(): String =
when (this % 10) {
1 -> "${this}st"
2 -> "${this}nd"
3 -> "${this}rd"
else -> "${this}th"
}
用法:
println("Please type ${(cycle+1).withOrdinalSuffix()} lesson")
请注意,在英语中,11、12、13 有后缀“th”,因此您可能想这样做:
fun Int.withOrdinalSuffix(): String =
if ((this % 100) in (11..13)) { // check last *two* digits first
"${this}th"
} else {
when (this % 10) {
1 -> "${this}st"
2 -> "${this}nd"
3 -> "${this}rd"
else -> "${this}th"
}
}
相反。
下面的代码用于计算考试成绩。 5 主题名称和从这些主题收到的 5 点被用户记录在空的 arrays 中。
我这里的都解决了。但是我想在 "cycle" 之后添加 "th" "st" "rd" "nd"。其中写着“请键入课程” 和 “请键入点”
例如: “请输入 1st 点”
但是使用我的代码我可以: "请输入 1 点"
我试图用 "When" 条件执行这个过程,但我不能,因为循环参数 "cycle" 不支持 last() 函数
例如:
when (cycle.last()) {
1 -> "st"
2 -> "nd"
}
如果有效,它会给我一个结果11st, 531st, 22nd, 232nd, 等。这就是我想要的
fun main() {
var subject = Array<String>(5){""}
var point = Array<Int>(5){0}
for (cycle in 0 until subject.count()) {
println("Please type ${cycle+1} lesson")
var typeLesson = readLine()!!.toString()
subject[cycle] = typeLesson
println("Please type ${cycle+1} point")
var typePoint = readLine()!!.toInt()
point[cycle] = typePoint
}
var sum = 0
for (cycle in 0 until point.count()) {
println("${subject[cycle]} : ${point[cycle]}")
sum = sum + point[cycle]/point.count()
}
println("Average point: $sum")
}
您可以将数字除以 10,然后使用 %
求余数。那是最后一位。
fun Int.withOrdinalSuffix(): String =
when (this % 10) {
1 -> "${this}st"
2 -> "${this}nd"
3 -> "${this}rd"
else -> "${this}th"
}
用法:
println("Please type ${(cycle+1).withOrdinalSuffix()} lesson")
请注意,在英语中,11、12、13 有后缀“th”,因此您可能想这样做:
fun Int.withOrdinalSuffix(): String =
if ((this % 100) in (11..13)) { // check last *two* digits first
"${this}th"
} else {
when (this % 10) {
1 -> "${this}st"
2 -> "${this}nd"
3 -> "${this}rd"
else -> "${this}th"
}
}
相反。