Ruby - "未定义的方法"按字母顺序排序程序

时间:2016-09-14 22:19:17

标签: ruby methods

我已经尝试创建一个程序,它将接受字符串,然后按字母顺序对它们进行排序,但是我已经遇到了一个我无法用我当前的水平理解的情况。 如果我运行没有if分支的代码,那么事情就好了;但是我这样做的那一刻:

  

junk.rb:20:<main>': undefined method ord&#39;为零:NilClass   (NoMethodError)

如果我删除了ord方法,我会收到split代替&#34; ord&#34;在返回的消息中。 有谁知道问题是什么?

CODE:

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

1 个答案:

答案 0 :(得分:0)

第一个while循环一旦到达空字符串就会终止(但仍会将其附加到列表中),这意味着words的最后一个元素是一个空字符串。将空字符串拆分为自身时,会得到一个空数组。

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

您最终会在第二个循环中触及此点,并在.ord上调用nil。您可以通过不将空字符串作为words数组的一部分来避免这种情况。