代码之家  ›  专栏  ›  技术社区  ›  MBJH

迭代和阵列

  •  0
  • MBJH  · 技术社区  · 10 年前

    如何迭代9次并生成三个这样的数组:

    1 a
    2 b
    3 c
    ["a","b","c"]
    
    4 d
    5 e
    6 f
    ["d","e","f"]
    
    7 g
    8 h
    9 i
    ["g","h","i"]  ?
    -------------------------------------
    1.upto(9) do
     xxx = gets.chomp
      wn << xxx
    if wn.length ==3
    puts wn.inspect
    
    end
    end
    ------------------------------------
    

    我得到以下输出:

    a
    b
    c
    ["a", "b", "c"]
    d
    e
    f
    g
    h
    i
    

    不是我希望的结果:(

    3 回复  |  直到 10 年前
        1
  •  1
  •   MurifoX    10 年前

    简单的解决方案:

    a1 = []
    a2 = []
    a3 = []
    1.upto(9) do |i|
      if a1.empty? || a1.size < 3
        a1 << gets.chomp!
      elsif a2.size < 3 
        a2 << gets.chomp!
      else
        a3 << gets.chomp!
      end
    end
    puts a1
    puts a2
    puts a3
    

    创建3个数组,迭代9次,创建填充它们的条件。

        2
  •  1
  •   TomDunning    10 年前

    你必须迭代吗?你总是可以按长度断开你的绳子,比如:

    "abcdefghi".scan(/.{3}/).map{|i| i.split('')} # => [["a", "b", "c"], ["d", "e", "f"], ["g", "h", "i"]]
    

    如果您真的必须迭代:

    1.upto(9) do
     xxx = gets.chomp
     wn << xxx
     if wn.length % 3 == 0 
       puts wn.inspect
      end
    end
    
        3
  •  0
  •   pjs    10 年前

    我认为嵌套循环是一个干净的解决方案。

    a = [[],[],[]]
    3.times do |i|
      3.times { |j| a[i][j] = gets.strip }
      puts a[i].inspect
    end