迭代和数组

时间:2015-03-25 11:32:32

标签: ruby arrays iteration

如何迭代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 个答案:

答案 0 :(得分:1)

一个简单的解决方案:

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次,创建填充它们的条件。

答案 1 :(得分:1)

你必须迭代吗?你总是可以按长度打破你的字符串,如下所示:

"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

答案 2 :(得分:0)

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

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