issue using method 'odd?'

Discussion in 'Ruby' started by Mmcolli00 Mom, Jan 20, 2009.

  1. I keep getting a no method error when trying to find out if a count is
    an odd number. I had tested the code with actual numbers and it works
    fine. It seems like it is not liking how I am trying to use the method
    'odd?' The count's class is of FixNum. I have tried converting to
    interger but got same result. Here is the code that I am using. Do you
    know if I need a gem or what I have not done here? Thanks. MC

    searchText.rb:38: undefined method `odd?' for 8:Fixnum (NoMethodError)
    from searchText.rb:30:in `each'
    from searchText.rb:30
    count1 ="NTemp.txt") do |src|
    src.each_line do |line|
    word1 = line.chomp.split(",")
    count1[word1] += 1
    #~ count2[word2] += 1

    words = (count1.keys).uniq
    words.each do |word|

    #~ if count[word] == 1
    #~ if count[word] == 2

    if count[word].odd? == true
    puts "Value does not contain a match: #{word}"
    Mmcolli00 Mom, Jan 20, 2009
    1. Advertisements

  2. Ruby 1.8 doesn't have an odd? method per se. Rail's ActiveSupport adds
    one to Integer. The code is quite simple, so I wouldn't require active
    support only for this:

    module EvenOdd
    def multiple_of?(number)
    self % number == 0

    def even?
    multiple_of? 2
    end if RUBY_VERSION < '1.9'

    def odd?
    end if RUBY_VERSION < '1.9'

    Ruby 1.9 has Fixnum#odd? though.

    Jesús Gabriel y Galán, Jan 20, 2009
    1. Advertisements

  3. Ruby 1.8.7 has odd?

    [email protected]:~$ ruby -v
    ruby 1.8.7 (2008-08-11 patchlevel 72) [i486-linux]
    [email protected]:~$ ruby -e 'puts 1.odd?'
    Michael Morin, Jan 20, 2009
  4. Doh, you are right ! I was checking 1.8.6.

    Jesús Gabriel y Galán, Jan 20, 2009
    1. Advertisements

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments (here). After that, you can post your question and our members will help you out.