2015-03-25 232 views
0

我怎样重复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 

不是我希望:(

+2

你还没有指定你正在使用的语言(Ruby也许?),但你可能想要使用'如果wn.length%3 == 0'。 – Phylogenesis 2015-03-25 11:36:50

+1

请添加您正在使用的编程语言的标签,以获得该语言专家的关注。 – lodo 2015-03-25 11:37:11

回答

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

+0

谢谢。这正是我需要:) – MBJH 2015-03-25 13:23:24

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 
+1

第一个可以变得更简单:''abcdefghi“.chars.each_slice(3).to_a' – 2015-03-25 12:30:54

0

我觉得嵌套循环是给你一个干净的解决方案。

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