2016-08-27 1 views
-3

Rubyのエラーコード

39: syntax error, unexpected end-of-input, expecting keyword_end 

私は今、数時間のためにそれをいじってみたが、私はまだルビーを学習にかなり新たなんだと完全に混乱しています。ここで私が働いているもの:

def encode(password) 
     i = 0 
     length = password.length 
     while i < length do 
      if letter[i] == "z" 
       letter[i]== "a" 
      else 
       letter[i] = letter[i].next 
     end 
    i += 1 
return password 

end 

def decode(encoded_password) 
      alphabet = "abcdefghijklmnopqrstuvwxyz" 
      i = 0 
      length = encoded_password.length 
      while i < length do 
       if letter == "a" 
        letter == "z" 
       else 
        encoded_password[i] = alphabet[alphabet.index(letter) - 1] 
      end 
      i += 1 
     end 
    return encoded_password 
end 

puts "What is the password?" 
password = gets.chomp 

puts "Would you like to decode or encode?" 
selection = gets.chomp 

if selection == "encode" 
    puts encode(password) 
elsif selection == "decode" 
    puts decode(password) 
end 

ありがとうございます!

+0

'エンコード'に 'end'を追加しますが、何をしようとしていますか? –

+1

このようなエラーが発生した場合は、 'ruby -w'でプログラムを実行すると便利です。欠落している" end "がどこにあるかを表示します。 –

答えて

1

encode方法でwhileブロックを閉じると、endが見つかりません。

def encode(password) 
    i = 0 
    length = password.length 
    while i < length do 
     if letter[i] == "z" 
      letter[i]== "a" 
     else 
      letter[i] = letter[i].next 
     end 
     i += 1 
    end # You missed this 
    return password 
end 

これはsyntax error, unexpected end-of-input, expecting keyword_endエラーを解決しますが、このコードには他の問題があります。 は、encodedecodeの方法では何を参照していますか?