2012-07-16 58 views
2

我是Ruby編程的初學者。我的程序是給定字符串中單詞長度的計數。但它顯示了以下錯誤對於[0,0]未定義的方法'<':Array <NoMethodError>

未定義的方法 '<' 爲[0,0]:數組

這裏是我的代碼

def even(words, n) 
    i = 0, m = 0 
    while i < n do 
     count = count + words[i].length 
     if count%2 == 0 then 
      m = m + 1 
     end 
     i = i + 1 
    end 
    return m 
end 
prinnt "Enter The String:" 
s = gets.chomp 
words = s.split() 
n = words.length 
x = even(words, n) 
puts x 
+1

用'words = s.split(「」)替換'words = s.split()',否則你的輸入不會被字符分割 – krichard 2012-07-16 07:36:17

回答

0

試試吧

def even(words, n) 
    i = 0 
    m = 0 
    count = 0 
     while i < n do 
     count = count + words[i].length 
     if count%2 == 0 then m = m + 1 end 
     i = i + 1 
     end 
     return m 
     end 
     print "Enter The String:" 
     s = gets.chomp 
     words = s.split("") 
     n = words.length 
     #p n 
     x = even(words, n) 
     puts x 
1

我是這樣想做它:

'this is a string'.split.select{ |w| w.size % 2 == 0 }.size # => 3 

申請gets

gets.chomp.split.select{ |w| w.length % 2 == 0 }.size 
1

其他人都已經給你解釋的立即錯誤是在你的代碼是什麼。然而,更大的問題是你的代碼不是慣用的Ruby代碼。

慣用的代碼會是這個樣子:

puts gets.split.map(&:length).count(&:even?) 

而且,正如你所看到的,根本就沒有辦法,你可以甚至犯了一個錯誤,如您所做的一個。

相關問題