无法用vanilla Ruby中的数组求和

时间:2014-10-06 19:42:11

标签: ruby arrays

我无法总结一个数组。这是我现有的代码:

pageArray = Array.new
puts "How many pages long is the book you're reading?"
pageArray << gets.chomp
puts "Are you reading any other books right now?"
yn = gets.chomp
while yn != "no" do    
  puts "How many pages long is your next book?"  
  pageArray << gets.chomp
  puts "Are you reading any other books right now?"
  yn = gets.chomp
end
pageSum = pageArray.reduce(:+)
puts pageSum

当我通过并输入值100和50时,最终的回报是“10050”,而不是“150”。我错过了一些明显的东西吗

3 个答案:

答案 0 :(得分:1)

代码可以写得更清楚,更像Ruby。这是一些更惯用的未经测试的代码:

page_array = []

puts "How many pages long is the book you're reading?"
page_array << gets.chomp

loop do
  puts 'Are you reading any other books right now?'
  yn = gets.chomp.downcase
  break if yn == 'no'

  puts 'How many pages long is your next book?'  
  page_array << gets.chomp.to_i
end

page_sum = page_array.reduce(:+)
puts page_sum

注意:

  • Ruby中的变量是snake_case,而不是InCamelCase。
  • loop do将永远循环。当您收到休息值时,只需break
  • 你应该将用作休息的值的大小写折叠以捕捉'y'和'Y'的变化。
  • 花时间格式化代码,以便轻松阅读,即使是快速测试也是如此。令人惊讶的是,我们认为代码经常只是一个实际投入生产的测试,所以第一次就做好了。

答案 1 :(得分:0)

您正在输入字符串并将它们连接起来。

使用gets.chomp.to_i

答案 2 :(得分:0)

您需要将从gets获得的字符串更改为int。

pageArray << gets.chomp.to_i