LocalJumpError calculating the median

Hi

I have searched/Googled around but I’m struggling with the following
problem.

I am building a Rails 2.3.2 application and one of the requirements is
to calculate the median of an array of results. I am using code for
calculating the median from the Ruby Cookbook but keep running in to a
problem with receiving an error ‘LocalJumpError - no block given’ when
I attempt to find the median of an array where there are an odd number
of members.

The example code in my view is as follows:

<%= survey_response.median([6,4,5,4,4,2]) %>
Then in survey_response.rb model the methods are as follows:

def mean(array)
array.inject(array.inject(0) { |sum, x| sum += x } /
array.size.to_f)
end

def median(array,already_sorted=false)
return nil if array.empty?
array = array.sort unless already_sorted
m_pos = array.size / 2
return array.size % 2 == 1 ? array[m_pos] : mean(array
[m_pos-1…m_pos])
end

The error is caused when the median method refers back to the mean
method to get the media of an odd total of items in the array. I just
can’t figure out why I get that error or indeed how to fix it - so I’d
hugely appreciate any help/guidance/laughing anybody could offer me!

Thanks

Simon

On Jun 24, 9:59 am, simon180 [email protected] wrote:

The example code in my view is as follows:

<%= survey_response.median([6,4,5,4,4,2]) %>
Then in survey_response.rb model the methods are as follows:

def mean(array)
array.inject(array.inject(0) { |sum, x| sum += x } /
array.size.to_f)
end

You’ve got two calls to inject there, but only the inner one has a
block. Not sure what the second call to inject should be doing - i
don’t think you need it at all.

Fred