返回用户输入的总和,直到他们说停止

时间:2017-11-29 08:31:40

标签: ruby

我正在尝试创建一些不断吸引用户输入的内容,直到他们说停止为止。然后,将所有以前的数字加在一起。这就是我到目前为止所做的:

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。

我哪里错了?

2 个答案:

答案 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

然后再也不会出错了。