甚至没有定义?ruby代码中的方法

甚至没有定义?ruby代码中的方法,ruby,Ruby,我正在尝试编写一个程序,接受20个数字作为键盘输入,然后我需要从输入的数字中获得偶数、奇数、正数和负数的计数 puts "Enter 20 numbers" numbers = Array.new while numbers.length <= 20 numbers << gets.chomp end puts "You have entered 20 numbers" h = Hash.new h["even"] = numbers.select {|x| x.even? &

我正在尝试编写一个程序,接受20个数字作为键盘输入,然后我需要从输入的数字中获得偶数、奇数、正数和负数的计数

puts "Enter 20 numbers"
numbers = Array.new
while numbers.length <= 20
numbers << gets.chomp
end
puts "You have entered 20 numbers"
h = Hash.new
h["even"] = numbers.select {|x| x.even? && x > 0}.count
h["odd"] = numbers.select {|x| x.odd? && x > 0}.count
h["positive"] = numbers.select {|x| x > 0}.count
h["negative"] = numbers.select {|x| x < 0}.count
puts h
输入“输入20个数字”
numbers=Array.new
而numbers.length 0}.count
h[“正”]=数字。选择{| x | x>0}。计数
h[“负”]=数字。选择{| x | x<0}。计数
放h
但是我知道这是一个错误的代码

 rytest.rb:9:in `block in <main>': undefined method `even?' for 
"7":String   (NoMethodError)
 from rytest.rb:9:in `select'
 from rytest.rb:9:in `<main>'
rytest.rb:9:in'block in':未定义的方法'even'
“7”:字符串(命名错误)
从rytest.rb:9:in'select'
来自rytest.rb:9:in`'

我不知道我可能做错了什么,因为我是ruby新手。请帮我找到一个合适的解决方案。

对于整数实例,您必须调用
偶数?

"1".to_i.even?
例如:

numbers = ["1", "2", "3"]
numbers.map(&:to_i).select(&:even?).select { |i| i > 0 } # => [2]

您必须在整数实例上调用
偶数?

"1".to_i.even?
例如:

numbers = ["1", "2", "3"]
numbers.map(&:to_i).select(&:even?).select { |i| i > 0 } # => [2]

这里有三件事不对

  • 正如其他人所评论的,您正在对一个不存在的字符串调用一个方法。“get”表示“get string”,字符串没有
    偶数?
    方法
  • 由于
    0}.count,您的循环正在提取21个条目,而不是20个
    h[“正”]=数字。选择{| x | x>0}。计数
    h[“负”]=数字。选择{| x | x<0}。计数
    放h
    
    这里有三件事不对

  • 正如其他人所评论的,您正在对一个不存在的字符串调用一个方法。“get”表示“get string”,字符串没有
    偶数?
    方法
  • 由于
    0}.count,您的循环正在提取21个条目,而不是20个
    h[“正”]=数字。选择{| x | x>0}。计数
    h[“负”]=数字。选择{| x | x<0}。计数
    放h
    
    您正在对字符串调用
    偶数?
    。使用
    gets.chomp.to_i
    将字符串从输入转换为整数。正如@SergioTulentsev所说的那样
    gets.chomp
    获取一个类似于“3”的字符串,但这是一个字符串,不是整数,
    “3”。甚至?
    是未定义的。如果更改它,以便在将其添加到数组之前将其转换为整数,则可以
    gets.chomp.to_i
    @SergioTulentsev来吧,你可以做得更好。@sawa:什么意思?:)@SergioTulentsev
    chomp
    。您正在用字符串调用
    偶数?
    。使用
    gets.chomp.to_i
    将字符串从输入转换为整数。正如@SergioTulentsev所说的那样
    gets.chomp
    获取一个类似于“3”的字符串,但这是一个字符串,不是整数,
    “3”。甚至?
    是未定义的。如果更改它,以便在将其添加到数组之前将其转换为整数,则可以
    gets.chomp.to_i
    @SergioTulentsev来吧,你可以做得更好。@sawa:什么意思?:)@SergioTulentsev
    chomp
    。你的答案和评论之间有什么区别?你的答案和评论之间有什么区别?