【发布时间】:2020-05-21 15:55:55
【问题描述】:
程序可以运行,但是,我仍然遇到一个逻辑错误:最后一个字母没有运行。例如,当我输入 aaaabbbbccccdddd 时,我得到的输出是 a4b4c4 但没有 d4。
fun main () {
val strUser = readLine()!!.toLowerCase()
val iLength = strUser!!.length
var iMatch : Int = 0
var chrMatch : Char = strUser[0]
for (i in 0..iLength) {
if (strUser[i] == chrMatch) {
iMatch += 1
}else {
print("$chrMatch$iMatch")
chrMatch = strUser[i]
iMatch = 1
}
}
}
【问题讨论】:
-
当你迭代某些东西时,你需要比它的大小或长度小一,因为计数从零开始。在这种情况下,您可以完全消除
iLength变量并使用for (i in strUser.indices)。或者更简单地说,您可以使用for (chr in strUser)之类的东西并使用chr代替strUser[i]。 -
“抛出这个错误” - 你得到什么错误?
-
这是一个逻辑错误@halfer,例如当我输入 aaaabbbbccccdddd 时,我得到的输出是 a4b4c4 但没有 d4
标签: kotlin stringindexoutofbounds