From: Dylan Date: 2009-09-02T06:10:06+09:00 Subject: Re: Error with an array of strings On Aug 28, 2:56 pm, Tom Smith wrote: > Thanks all for your help. > > Josh, that's definitely an improved loop, thanks. In any case, here's > the improved code I've ended up with (pre-changing the loop): > > all_inputs = Array.new > > until $_  == "n" > puts "Enter Number:\n" > response = gets > response.chop! > response.to_f > > all_inputs.push(response) > > print "add more numbers to average? y or n\n" > continue = gets > continue.chop! > > end > > averageall = all_inputs.inject(0){|sum,num| sum + num.to_f } / > all_inputs.length > > print "Average is: ", averageall,"\n" > -- > Posted viahttp://www.ruby-forum.com/. Looks like you're going through a lot of extra work for something relatively simple. You require 4 keystrokes minimum for every number. def getAvg arr = [] number = 0 print "Enter Number (leave blank to finish): " until number == "" number=gets.chop! arr << number.to_i if(number!="") end sum=0.0 arr.each{|e| sum += e} return sum/arr.length end irb(main):65:0> getAvg Enter Number (leave blank to finish): 10 5 => 7.5 irb(main):66:0> getAvg Enter Number (leave blank to finish): 4 12 67 => 27.6666666666667 Or you could make the user do the work for you: def getAvg print "Enter Numbers (separated by commas): " input=gets.chop! input=input.split(",") sum=0.0 input.each{|e| sum += e.to_i} return sum/input.length end irb(main):065:0> getAvg Enter Numbers (separated by commas): 5,5,5,5,5,10,10,10,10,10 => 7.5 irb(main):066:0> getAvg Enter Numbers (separated by commas): 1,2,3,4,5 => 3.0 irb(main):067:0> getAvg Enter Numbers (separated by commas): 1,2,3,4,20 => 6.0 irb(main):068:0> getAvg Enter Numbers (separated by commas): 1,2,3,4,5,24 => 6.5