我正在尝试创建一些不断吸引用户输入的内容,直到他们说停止为止。然后,将所有以前的数字加在一起。这就是我到目前为止所做的:
arr = []
puts "Give me a number:"
while input = gets.chomp
if input == "stop"
break
else
puts "Give me a number:"
arr << input
end
end
sum = arr.inject(:+)
puts sum
在将数字加在一起之前,这样做很好。 arr.inject(:+)似乎是将数字加在一起而不是添加。
例如,在while循环中,我在gets.chomp中输入1,2和3,但程序返回123而不是6。
我哪里错了?
答案 0 :(得分:3)
arr.inject(0) { |sum,e| sum + e.to_i }
有点冗长,但你的问题是从input == String读取,你想要整数。
其他解决方案可能是
arr.map(&:to_i).inject(:+)
但第一个更有效但不那么花哨。
答案 1 :(得分:1)
是
的组合arr << input
和
arr.inject(:+)
例如,如果您将第一个更改为:
arr << input.to_i
然后再也不会出错了。