无法打印按字母顺序排序的数组(Ruby)

时间:2016-03-03 19:09:20

标签: arrays ruby sorting

我的一个小程序遇到了问题。它应该问你的话,直到你什么都不说,然后从这些单词中打印出按字母顺序排列的数组。相反,我输入的单词后面没有打印出来这是代码:

puts "which words would you like to sort?"

def sort
  sw=[]

  word=gets.chomp.to_s

  sw2=sw.push "#{word}"

  if word == ""
    puts sw2.sort

  else
    sort
  end
end

sort

1 个答案:

答案 0 :(得分:1)

让我们分解原始代码:

def sort
    sw=[ ]
    word=gets.chomp.to_s
    sw2=sw.push "#{word}"
    if word == " "
        puts sw2.sort
    else
        sort
    end
end

sort

很好,可以看到使用closure的新代码。然而,一些陷阱:

  • 什么是sw2
  • 您试图在sort内调用sort方法。
  • 您使用==运算符将word与字符串" "进行比较, 为空答案。< / LI>

现在,让我们回顾一下你对问题的回答:

def sort
    sw = [ ]

    word = gets.chomp.to_s    
    sw << word

    until word == ""
        puts sw
        word = gets.chomp!.to_s
        sw << word
        sw.sort!
    end
end

sort
  • 请注意我对until循环的使用,它适用于您的目的,并在here
  • 中进行了描述
  • 除了word
  • 之外没有任何其他变量
  • 除了sw
  • 之外没有任何其他数组
  • !用于枚举.chomp.sort!

我希望这有助于并欢迎Ruby!