2016-03-03 80 views
-4

我一直有我的一個小程序的問題。它應該問的話,直到你說什麼,然後打印從這些words.Instead的按字母順序排序陣列我已經inputed不打印輸出這裏的話後是代碼:無法打印按字母順序排序的數組(紅寶石)

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 
+3

請了解如何使用Markdown並相應地設置您的帖子的格式。或者,編輯您的問題以刪除代碼,將其粘貼回原始內容,選擇全部內容,然後按CTRL + K,它將爲您設置格式。 –

+0

歡迎來到SO。請花些時間閱讀http://stackoverflow.com/help/how-to-ask。它會幫助你提出很好的問題(希望這將有助於產生良好的答案)。 – orde

+0

''#{word}「'應該只是」單詞「。沒有理由引用它。它也應該是'sw2 << word',而不是從'push'的結果分配。 – tadman

回答

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字符串" ",這是一個空的答案。

現在,讓我的回答審覈你的問題:

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!

我希望這可以幫助,歡迎紅寶石!

+0

謝謝你的時間以及你的回答,sw2是我試圖通過把sw.push的值並賦值給另一個變量來修復以前版本的代碼。你介意我問:「」是不是一個空字符串是什麼? – user6014992

+0

@ user6014992一個空字符串是:'「」',而'「」'包含一個空格。 – EVAL

+0

我也一直有一個問題,程序打印排序數組每次我輸入一個單詞而不是輸入空字符串後,這可能是一個noob問題,但我該如何解決? – user6014992