我有問題排序數組升序,然後從數組中挑選一個值放入一個新的數組。紅寶石 - 排序數組值,然後選擇新陣列
# Splitting dance scores with "," and putting into arrays.
for dancers in results
a = dancers.split(",")
couplenumber = a[0]
score1 = a[1]
score2 = a[2]
score3 = a[3]
score4 = a[4]
score5 = a[5]
score6 = a[6]
score7 = a[7]
dancescores << Dancer.new(couplenumber, score1, score2, score3, score4, score5, score6, score7)
# Sorts the array into ascending order, and shows the 4 lowest values.
#p dancescores.sort.take(4)
# Getting the m value, from picking the 4th lowest number.
m = a[4]
newtest = [couplenumber, m]
coupleandscore << newtest
coupleandscore
end
puts coupleandscore
現在它給我的原始值的新陣中,這是它應該。但如果我嘗試做
p dancescores.sort.take(4)
我會得到這個錯誤:
[#<Dancer:0x10604a388 @score7=5, @score3=3, @score6=6, @score2=2, @score5=1, @score1=1, @couplenumber="34", @score4=3>]
examtest.rb:43:in `sort': undefined method `<=>' for #<Dancer:0x10604a388> (NoMethodError)
任何形式的幫助將不勝感激!
你的得分是不完全清楚;你能解釋得更好嗎? '<=>'錯誤是因爲您尚未定義'<=>'方法。查看['Comparable'](http://www.ruby-doc.org/core-1.9.3/Comparable.html)模塊和['Enumerable.sort']的文檔(http:// ruby-doc .ORG /芯1.9.3/Enumerable.html#方法-I-排序)。 –
基本上每對夫婦得分在1-6之間,1是最好的。他們從7名裁判那裏得到一個分數。他們可能會得到這樣的分數(1,4,2,6,6,5,3)。所以我想排序它,所以我按照這樣的升序排列(1,2,3,4,5,6,6),然後選擇第四個值(在這個例子中是數字4),然後比較每個舞者(找到贏家,這是第四個數字中價值最低的那個) – johk