如何迭代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
不是我希望的结果:(
答案 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