我已经测试过在调用函数时输入正确和错误的索引,并且已经发现只有第二个if语句是导致问题的原因。我不知道该怎么办,因为两个if语句都非常相似我找不到问题。我重置了第二个if语句,将changeThis更改为只有第一个,这也没有用,所以我只是将它改回aWordCharacters.count方法......请帮助!!
// to define a custom index, and asign it a new custom position
func rearangeALetter( aWord: String, var changeThis: Int, var withThis: Int) -> (codedWord:String, fromTo: String) {
let aWordCharacters: [Character] = wordSeperator(aWord)
let changeCharacter: Character = aWordCharacters[changeThis]
var finalWord: [Character] = aWordCharacters
finalWord.removeAtIndex(changeThis)
if withThis > aWordCharacters.count {
withThis = 0
}
if changeThis > finalWord.count {
changeThis = aWordCharacters.count
}
finalWord.insert(changeCharacter, atIndex: withThis)
let returnWord = combineWords(finalWord)
return (returnWord, "Letter number \(changeThis + 1) has been switched with letter number \(withThis + 1 )")
}
rearangeALetter("Hello", changeThis: 101, withThis: 100)
答案 0 :(得分:0)
数组中索引的有效范围是从0到count - 1,而不是从0到count。我认为您需要更改第二个if:
class KmInput(NumberInput):
def _format_value(self, value):
return str(value / 1000)
但是,那说,我不确定你要完成什么,所以我不会发誓。由于您实际上没有使用if changeThis > finalWord.count {
changeThis = aWordCharacters.count - 1
}
来索引数组,因此它实际上也不会解决崩溃问题。
啊,在使用索引之前,还需要进行边界检查(两个if语句):
changeThis