我是Ruby编程的初学者。我的程序是给定字符串中单词长度的计数。但它显示以下错误
未定义的方法'<' for [0,0]:Array
这是我的代码
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
答案 0 :(得分:4)
我认为你的问题在这里
i = 0, m = 0
制作
i = 0
m = 0
编辑:
也像KaiKönig所说,如果你这样称呼它意味着
" now's the time".split #=> ["now's", "the", "time"]
答案 1 :(得分: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
答案 2 :(得分:1)
其他人已经向您解释了代码中立即错误的内容。但是,更大的问题是你的代码不是惯用的Ruby代码。
惯用语代码看起来像这样:
puts gets.split.map(&:length).count(&:even?)
而且,正如你所看到的那样,你根本无法犯甚至犯错误,例如你所犯的错误。
答案 3 :(得分: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