我有這樣的代碼:未定義的方法長度和下一個!對於零:NilClass
def encrypt(x)
index = 0
alphabet = "abcdefghijklmnopqrstuvwxyz"
while index < x.length
letter = x[index]
if letter == ' '
print ' '
index += 1
elsif letter == "z"
print "a"
index += 1
else
letter = alphabet[letter].next!
index += 1
print letter
end
end
end
def decrypt(x)
number = 0
alphabet = "abcdefghijklmnopqrstuvwxyz"
while number < x.length
green = x[number]
if green == ' '
print ' '
number += 1
else
red = alphabet.index(green)
red = red.to_i
blue = red - 1
yellow = alphabet[blue]
print yellow
number += 1
end
end
end
如果我添加一個大寫字母,如:
encrypt("Dhd d hd h")
返回:
undefined method `next!' for nil:NilClass
(repl):13:in `encrypt'
(repl):39:in `initialize'
,或者如果我嘗試使用兩種方法:
encrypt(decrypt("Dhddhdh"))
返回
undefined method `length' for nil:NilClass
(repl):4:in `encrypt'
(repl):39:in `initialize'
我認爲這是由於其在參數空間,並添加了對一個if
/else
,但沒有運氣。有人能指引我朝着正確的方向嗎?
你期待加密時取出的情況下或在這些演習的情況下被刪除保存它(通常是由於我們的目標是不涵蓋所有可能的字符,只是爲了讓你思考處理字符串)?另外,請考慮在解密例程中爲變量使用描述性名稱,而不是像顏色這樣的任意名稱 - 使用像您這樣的名稱來執行加密例程,這是一般的良好實踐,並且對於其他人閱讀您的代碼非常重要,因爲它加快了對它應該做什麼。 –