Ruby程序创建接受整数的奇偶方法

Ruby程序创建接受整数的奇偶方法,ruby,Ruby,我需要帮助来编写接受整数数组的奇偶方法 它应该返回一个包含2个数组的数组 第一个嵌套数组应仅包含奇数 第二个嵌套数组应仅包含偶数 如果没有偶数或奇数,则相应的内部数组应为空 输出应如下所示:- even_odd([3, 5, 8, 2, 4, 6]) [[3, 5], [2, 4, 6, 8]] even_odd([3, 5]) [[3, 5], []] even_odd([2, 4]) [[], [2, 4]] 我是ruby编程新手,我尝试了以下方法,但没有得到结果:-

我需要帮助来编写接受整数数组的奇偶方法

  • 它应该返回一个包含2个数组的数组
  • 第一个嵌套数组应仅包含奇数
  • 第二个嵌套数组应仅包含偶数
  • 如果没有偶数或奇数,则相应的内部数组应为空
  • 输出应如下所示:-

    even_odd([3, 5, 8, 2, 4, 6])
       [[3, 5], [2, 4, 6, 8]]
    
    even_odd([3, 5])
       [[3, 5], []]
    
    even_odd([2, 4])
       [[], [2, 4]]
    
    我是ruby编程新手,我尝试了以下方法,但没有得到结果:-

    def even_odd(numbers)
      arr1, arr2 = []
      idx = 0
      while idx < numbers.length
        if numbers[idx] % 2 == 0
        puts arr1[idx]   
        elsif 
        puts arr2[idx]
      end
      idx += 1
    end
    end
    puts even_odd([2, 3, 6])
    
    def奇偶(数字)
    arr1,arr2=[]
    idx=0
    而idx
    错误:-

    main.rb:6:in `even_odd': undefined method `[]' for nil:NilClass (NoMethodError)
        from main.rb:13:in `<main>'
    
    main.rb:6:in'偶数\奇数:nil:NilClass(NoMethodError)的未定义方法“[]”
    从main.rb:13:in`'
    
    puts
    是ruby中的打印语句,而不是追加语句。它也不运行函数/方法。您还需要调用if…else块内的numbers数组上的索引

    这应该可以做到:

    def even_odd(numbers)
      arr1, arr2 = [], []
      idx = 0
      while idx < numbers.length
        if numbers[idx] % 2 == 0
          arr1 << numbers[idx]
        elsif 
          arr2 << numbers[idx]
        end
      idx += 1
      end
      return arr1, arr2
    end
    
    arrays = even_odd([2, 3, 6])
    puts arrays
    
    def奇偶(数字)
    arr1,arr2=[],[]
    idx=0
    而idx
    
    def even_odd(numbers)
      numbers.sort.partition(&:odd?)
    end
    
    even_odd([3, 5, 8, 2, 4, 6])
    # => [[3, 5], [2, 4, 6, 8]]
    even_odd([3, 5])
    # => [[3, 5], []]
    even_odd([2, 4])
    # => [[], [2, 4]]
    

    “未得到结果”不是一个足够精确的错误描述,我们无法帮助您。什么不起作用?它怎么不起作用?你的代码有什么问题?你收到错误信息了吗?错误消息是什么?你得到的结果不是你期望的结果吗?你期望得到什么样的结果?为什么?你会得到什么样的结果?两者有什么不同?你观察到的行为是否不是期望的行为?期望的行为是什么?为什么?观察到的行为是什么?它们有什么不同@阿维德:为什么要重新发明轮子<代码>数字。分区(&:奇数?
    将完全满足您的要求。@JörgWMittag-很抱歉,我忘记添加错误。让我添加它。或者更简单:
    numbers.partition(&:odd?)\#=>[[3,5],[8,2,4,6]
    但在修复代码方面做得很好,没有完全重写代码。感谢@SergioTulentsevThis提供的帮助。最简单的方法。实际上,我还没有研究分区对象。无论如何谢谢