2016-09-14 7 views
0

文字列を取り込んでアルファベット順に並べ替えるプログラムを作成しようとしましたが、現在のものでは理解できないようなバンプがありますレベル。 ifブランチなしでコードを実行すると、問題は解決します。しかし、私はこれを行う瞬間:Ruby - アルファベット順ソートプログラムの "未定義メソッド"

junk.rb:20:NilClass (NoMethodError)

私はordメソッドを削除した場合、私は同じメッセージが表示されます:nilのための<main>': undefined method ORD」内に返されたメッセージに「ord」の代わりにsplitがあります。 問題は何ですか?

CODE:それはwordsの最後の要素が空の文字列であることを意味し、(まだリストにこれを追加)、空の文字列になったら

words = [] 
cWords = nil 
x = 0 
y = 0 

while (cWords != "") 
    cWords = gets.chomp 
    words[x] = cWords 
    x = x + 1 
end 

x = 0 

while (y < 200) #arbitrary limit at the moment 
    if (words[x].split("")[0].ord == y) 
    puts words[x] 
    end 
    y = y + 1 
    x = x + 1 
end 
+0

try 'puts"スペースで区切られた単語を入力してください "; words = gets.split; p words.sort' –

答えて

0

あなたの最初のwhileループが終了します。空の文字列をそれ自身に分割すると、空の配列が得られます。

"".split("") #=> [] 
"".split("")[0] #=> nil 

あなたは最終的にあなたの第二のループではこの点を打つ、とnil.ordを呼び出しています。これを回避するには、空の文字列をwords配列の一部として含めないでください。

+0

こんにちは。そして、ありがとう。それはもはやメッセージを表示していません。私はあなたが言ったことに従ってコードを変更しています。変数 "x" .length - 1をループとして使用し、その中のyループを使用するほうがよいことに気付きました。 まだ動作していませんが、私はそのハードルを過ぎています。ありがとう、私はその問題を解決することができませんでした。 –

+0

@ChrisK私はそれが助けてうれしいです。あなたは答えを受け入れることができますか? – Matt

+0

こんにちは。私はこれが遅いことを知っている。しかし、私はどのように答えを受け入れるのですか? –

関連する問題