You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为什么在for循环中不能将i作为index方法的参数使用

解密代码问题修复

错误根因

待解密的字符串包含空格字符,你定义的alphabet数组中未收录空格,调用alphabet.index(i)查找空格索引时会返回nil,nil无法参与数值运算,因此抛出异常。

修复方案

方案1:调整字母表适配所有字符

在字母表中增加空格元素,同步修改模运算的除数即可:

message = "rvtufkmbrdpr fmasmegppreemvemeuaiv tmgb"
messageArray = message.chars
decrypted = ""
# 末尾新增空格元素,总长度变为28
alphabet = ["","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"," "]
for i in(messageArray)
    letter = alphabet[((alphabet.index(i)) + 14) % 28]
    decrypted += letter
end
puts decrypted

方案2:单独处理空格字符

无需修改原有字母表逻辑,碰到空格直接跳过位移步骤,原样保留即可:

message = "rvtufkmbrdpr fmasmegppreemvemeuaiv tmgb"
messageArray = message.chars
decrypted = ""
alphabet = ["","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"]
for i in(messageArray)
    if i == " "
        decrypted += " "
        next
    end
    letter = alphabet[((alphabet.index(i)) + 14) % 27]
    decrypted += letter
end
puts decrypted

两种方案都可以解决index方法调用报错的问题,运行后可正常输出解密后的字符串。

内容的提问来源于stack exchange,提问作者Hugo Salcedo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 13:36:04